不支持关键字:';附件bFileName';-MDF数据库文件(C#)
我正在尝试连接到我的不支持关键字:';附件bFileName';-MDF数据库文件(C#),c#,database,sql-server-ce,connection-string,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 Sec
.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>
每当我尝试执行时,我都会得到一个异常
不支持关键字:“attachdbfilename”
我非常感谢您对这个问题的帮助。据我所知,SQL Server CE不使用
mdf
文件,而使用sdf
文件。此外,您不必使用属性AttachDbFilename
,只需使用属性数据源=…
<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 Server compact edition。它是完整的SQL Server
Compact edition已弃用,您不应该使用它。根据文档,如果您想要像compact edition一样的“本地文件”数据库,则可以使用LocalDB。但它与完整的SQL Server提供程序配合使用。这就是为什么您会遇到此异常
您的配置很好。您只需将连接创建代码更改为使用SqlConnection
而不是SqlCeConnection
private string connection = System.Configuration.ConfigurationManager.ConnectionStrings["DBConnection"].ToString();
SqlConnection con = new SqlConnection(connection);
我知道你已经接受了另一个答案。我不在乎。我只是想警告人们不要继续使用SQLServerCE。在不久的将来你会遇到麻烦 在使用.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
是完整SQL Server的数据库文件,而不是SQL Server CE。完整的SQL Server仅在SQL Server Express edition中支持AttachDbFileName=
语句。对于SQL Server CE,您需要使用一个.sdf
数据库文件,并且在连接字符串中使用另一个providerName
,因为providerName
是错误的-对于SQL Server CE 4.0,它必须是providerName=“System.Data.SqlServerCe.4.0”
,从我可以看出OP使用的是LocalDB而不是SqlServerCe.4.0。这个答案是完全错误的。@Jordan,但为什么它比它更有效呢?请告诉我答案中应该“更正”的内容。@BendEg我只是说LocalDB和SqlServer CE是两个不同的东西。后者不受欢迎。LocalDB使用mdf文件,并使用System.Data.SqlClient作为其提供程序。OP的原始配置应该可以正常工作。迁移回不推荐使用的配置并不是一个好主意,无论它是否工作。因此,这不是问题的解决办法。
private string connection ="Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\iseo-db.mdf;Integrated Security=True"
SqlConnection con = new SqlConnection(connection);