Как подключиться к SQL Server Compact 4.0 в ASP.NET? - PullRequest
10 голосов
/ 02 февраля 2011

Я хочу подключиться к SQL Server Compact 4.0 в моем приложении ASP.NET.

Вот пример кода:

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();
}

Но у меня есть следующая ошибка: «При установлении соединения с SQL Server произошла ошибка, связанная с сетью или экземпляром. Сервер не был найден или был недоступен. Убедитесь, что имя экземпляра указано правильно и что SQL Server настроен для разрешения удаленных подключений. Сетевые интерфейсы SQL, ошибка: 26 - ошибка при поиске сервера / указан экземпляр) "

SqlDataSource имеет конструктор с тремя параметрами, одним из которых является 'providerName', поэтому, как указать, что я хочу обязательно использовать поставщика Sql Server Compact? Также я добавил ссылку System.Data.SqlServerCe ..

Ответы [ 4 ]

22 голосов
/ 02 февраля 2011

Попробуйте:

providerName = "System.Data.SqlServerCe.4.0"
2 голосов
/ 29 сентября 2013

Поместите один файл базы данных (например, MySite.sdf) в папку App_Data.

Добавить запись connectionStrings в web.config, чтобы разрешить подключение к базе данных:

web.config

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

И затем вы можете создать соединение по желанию через строку подключения name db :

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;
}

Примечание : любой код публикуется в открытом доступе. Указание авторства не требуется.

0 голосов
/ 02 февраля 2011

Вы можете сначала получить данные в таблицу данных:

        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;
            }
        }
0 голосов
/ 02 февраля 2011

Посмотрите на пример здесь:

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

Если вы хотите явно указать местоположение, попробуйте:

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