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

Keyword not supported: 'attachdbfilename' - MDF Database File (C#)

我正在尝试连接到我的 .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);

当我每次尝试执行时,我都会收到一个异常

Keyword not supported: 'attachdbfilename'

如果能就此问题提供任何帮助,我将不胜感激。

据我所知,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

如果您使用的是 LocalDB,则应使用 SqlConnection。 LocalDB 不是 SQL 服务器精简版。它是完整的 SQL 服务器。

精简版已弃用,您不应使用它。根据文档,如果你想要一个 "local file" 数据库,你可以使用 LocalDB,就像精简版一样。但它适用于完整的 SQL 服务器提供商。这就是您收到此异常的原因。

您的配置没问题。您只需更改连接创建代码以使用 SqlConnection 而不是 SqlCeConnection

private string connection = System.Configuration.ConfigurationManager.ConnectionStrings["DBConnection"].ToString();

SqlConnection con = new SqlConnection(connection);

我知道你已经接受了另一个答案。我不在乎。我只是想警告人们不要继续使用 SQL Server CE。近期你会遇到麻烦。

由于您使用的是 .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);

确保您没有在代码中的任何地方使用 SqlCe。