Ответ 1
Try:
providerName = "System.Data.SqlServerCe.4.0"
Я хочу подключиться к 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 Network Interfaces, ошибка: 26 - Ошибка определения местоположения сервера/экземпляра)
В SqlDataSource есть конструктор с тремя параметрами, один из них - имя поставщика, поэтому, как указать, что я хочу определенно использовать поставщик Sql Server Compact? Также я добавил ссылку System.Data.SqlServerCe..
Try:
providerName = "System.Data.SqlServerCe.4.0"
Поместите файл единой базы данных (например, 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;
}
Примечание. Любой код выпущен в общедоступном домене. Не требуется атрибуция.
Посмотрите пример здесь:
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;
Сначала вы можете перенести данные в файл данных:
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;
}
}