不支持的关键字:'attachdbfilename' - MDF数据库文件(C#)

时间:2015-12-23 21:41:33

标签: c# database sql-server-ce connection-string

我尝试连接到我的.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'

我真的很感激这个问题的任何帮助。

3 个答案:

答案 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.DataSystem.Data.SqlClient

private string connection ="Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\iseo-db.mdf;Integrated Security=True" 

SqlConnection con = new SqlConnection(connection);

确保您没有在代码中的任何位置使用SqlC。