不支持的关键字:'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.Data
和 System.Data.SqlClient
.
private string connection ="Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\iseo-db.mdf;Integrated Security=True"
SqlConnection con = new SqlConnection(connection);
确保您没有在代码中的任何地方使用 SqlCe。
我正在尝试连接到我的 .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.Data
和 System.Data.SqlClient
.
private string connection ="Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\iseo-db.mdf;Integrated Security=True"
SqlConnection con = new SqlConnection(connection);
确保您没有在代码中的任何地方使用 SqlCe。