我尝试连接到我的.MDF
文件,但我无法完成它。我尝试了各种连接字符串,但仍然遇到同样的错误。
这是来自app.config的连接字符串
<connectionStrings>
<add name="DBConnection"
connectionString="Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\iseo-db.mdf;Integrated Security=True"
providerName="System.Data.SqlClient" />
</connectionStrings>
这就是我调用此连接字符串的方式
private string connection = System.Configuration.ConfigurationManager.ConnectionStrings["DBConnection"].ToString();
SqlCeConnection con = new SqlCeConnection(connection);
每当我尝试执行时,我都会得到一个例外
不支持关键字:'attachdbfilename'
我真的很感激这个问题的任何帮助。
答案 0 :(得分:1)
据我所知,SQL-Server CE不使用mdf
个文件,而不使用sdf
个文件。此外,您不必使用属性AttachDbFilename
,只需使用属性Data Source=...
。
<add name="DBConnection"
connectionString="Data Source=|DataDirectory|/iseo-db.sdf;Integrated Security=True"
providerName="System.Data.SqlServerCe.4.0" />
这样的事情应该可以解决问题。
修改强>
根据@marc_s,数据提供者也必须更改为:System.Data.SqlServerCe.4.0
答案 1 :(得分:0)
如果您使用的是LocalDB,则应使用SqlConnection
。 LocalDB不是SQL Server紧凑版。它是完整的SQL Server。
不推荐使用精简版,您不应该使用它。根据文档,如果你想要一个“本地文件”数据库就可以使用LocalDB,就像紧凑版一样。但它适用于完整的SQL Server提供程序。这就是你得到这个例外的原因。
您的配置很好。您只需更改连接创建代码即可使用SqlConnection
代替SqlCeConnection
。
private string connection = System.Configuration.ConfigurationManager.ConnectionStrings["DBConnection"].ToString();
SqlConnection con = new SqlConnection(connection);
我知道你接受了另一个答案。我不在乎。我只想警告人们不要继续使用SQL Server CE。你将在不久的将来遇到麻烦。
答案 2 :(得分:0)
当您使用.mdf文件时,您无法使用SqlCeConnection
,而应使用SqlConnection
连接到数据库。为此,您需要使用System.Data
和System.Data.SqlClient
。
private string connection ="Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\iseo-db.mdf;Integrated Security=True"
SqlConnection con = new SqlConnection(connection);
确保您没有在代码中的任何位置使用SqlC。