2011-02-02 44 views
10

Quiero conectarme a SQL Server Compact 4.0 en mi aplicación ASP.NET.¿Cómo se conecta a SQL Server Compact 4.0 en ASP.NET?

Aquí es ejemplo de código:

protected void Page_Load(object sender, EventArgs e) 
{ 
    string connStr = "Data Source=D:\\MyDB.sdf;"; 
    string sqlStr = "select * from tblMyTable"; 

    var sqlDataSrc = new SqlDataSource(connStr, sqlStr); 

    GridWithUrls.DataSource = sqlDataSrc; 
    GridWithUrls.DataBind(); 
} 

pero tengo el siguiente error: "Se ha producido un error relacionado con la red o específico de la instancia, mientras que no se encontró establecer una conexión con el servidor SQL o server.The no fue accesible. Verifique que el nombre de instancia sea correcto y que SQL Server esté configurado para permitir conexiones remotas. (proveedor: Interfaces de red SQL, error: 26 - Error al localizar el servidor/Instancia especificada) "

El SqlDataSource tiene un constructor con tres parámetros, uno de ellos es 'providerName' entonces, cómo especificar que ¿Quieres usar definitivamente el proveedor Sql Server Compact? También he añadido referencia System.Data.SqlServerCe ..

Respuesta

22

Probar:

providerName = "System.Data.SqlServerCe.4.0" 
+0

gracias, tiene sentido – Yara

0

Tenga una mirada en el ejemplo aquí:

http://connectionstrings.com/sql-server-2005-ce

Si desea especificar la ubicación explícitamente intente:

Data Source=" + (System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase) + "\\MyDB.sdf;Persist Security Info=False; 
0

Puede tirar th Datos en una tabla de datos primero:

 using (SqlCeConnection c = new SqlCeConnection(
      Properties.Settings.Default.DataConnectionString)) 
     { 
      c.Open(); 

      // Create new DataAdapter 
      using (SqlCeDataAdapter a = new SqlCeDataAdapter(
       "SELECT * FROM tblMyTable", c)) 
      { 

       // Use DataAdapter to fill DataTable 
       DataTable t = new DataTable(); 
       a.Fill(t); 

       // Render data onto the screen 
       dataGridView1.DataSource = t; 
      } 
     } 
2

Coloque el archivo de base de datos individual (p. MySite.sdf) en la carpeta App_Data.

agregar una entrada a connectionStringsweb.config para permitir la conexión a la base de datos:

web.config:

<configuration> 
    <connectionStrings> 
     <add name="db" 
      connectionString="Data Source=|DataDirectory|\MySite.sdf" 
      providerName="System.Data.SqlServerCe.4.0" /> 
    </connectionStrings> 
    ... 
</configuration> 

y luego se puede crear una conexión tan deseado a través de la cadena de conexión namedb:

public static DbConnection CreateConnection() 
{ 
    //Get connection string named "db" 
    String csName = "db"; 
    ConnectionStringSettings cs = ConfigurationManager.ConnectionStrings[csName]; 
    if (cs == null) 
     throw new ConfigurationErrorsException("Could not find connection string \"" + csName + "\""); 

    //Get a factory based on the "ProviderName" in the connection string 
    DbProviderFactory factory = DbProviderFactories.GetFactory(cs.ProviderName); 
    if (factory == null) 
     throw new Exception("Unable to locate factory for " + cs.ProviderName); 

    //Have the factory create us a connection object 
    DbConnection conn = factory.CreateConnection(); 

    //Open the connection with the connection string from web.config 
    conn.ConnectionString = cs.ConnectionString; 
    conn.Open(); 

    //Give the ready connection to the user 
    return conn; 
} 

Note: Any code is released into the public domain. No attribution required.

Cuestiones relacionadas