【问题标题】:Use .MDF file in c#在 C# 中使用 .MDF 文件
【发布时间】:2013-04-09 06:27:33
【问题描述】:

我有一个.mdf 文件。我想在桌面应用程序的 c# 中使用它。

这是我的连接字符串:

string cwd = System.IO.Directory.GetCurrentDirectory();
string ConString = @"Data Source=.\SQLEXPRESS; AttachDbFilename=" + cwd + "\\SalaryProgram.mdf;Integrated Security=True;User Instance=True";

如何在 C# 中使用 .mdf 文件?

我收到此错误:

尝试为文件 D:\Naresh Backup\SalaryProgram\Latest Work\SalaryProgram\SalaryProgram\bin\Debug\SalaryProgram.mdf 附加自动命名数据库失败。存在同名数据库,或指定文件无法打开,或位于 UNC 共享上。

提前致谢。

【问题讨论】:

  • 消息似乎很清楚:同名的数据库已经存在 - 您的 SQL Server Express 实例中不能有两个同名的数据库...跨度>
  • 我的本地电脑上没有同名数据库。以前,我使用另一台电脑(共享)的数据库,现在我想在本地使用该 mdf 文件。

标签: c# sql-server desktop-application


【解决方案1】:

检查以下 3 件事:

  1. 确保您的 MDF 文件是由与目标计算机上安装的 SQL Server 版本相同或更早的版本创建的。

  2. 确保目标计算机上的 SQL Server 没有同名的数据库。

  3. 总是更喜欢Path.Combine(),而不是文件夹路径和文件名的直接串联。有时函数会返回结束反斜杠字符作为路径的一部分,有时则不会。所以直接串联会导致非法路径。

  4. 您可能还想研究|DataDirectory| 功能,在GetCurrentDirectory() 中查找。

【讨论】:

  • 所以,我必须将我的 mdf 文件放在这个文件夹中:C:\Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\DATA ?或者我可以把它放在项目文件夹中吗?
  • 你可以把它放在你想要的任何地方。 DataDirectory 宏可以通过编程方式配置为指向您想要的任何文件夹。我上面提供的链接有更多信息。
  • string ConString = @"Data Source=.\SQLEXPRESS; AttachDbFilename=|DataDirectory|\SalaryProgram.mdf;Integrated Security=True;User Instance=True";这是我现在的连接字符串。我收到以下错误:尝试为文件 D:\Naresh Backup\SalaryProgram\Latest Work\SalaryProgram\SalaryProgram\bin\Debug\SalaryProgram.mdf 附加自动命名数据库失败。存在同名数据库,或指定文件无法打开,或位于 UNC 共享上。
  • 我的本地电脑上没有这样的数据库,它在另一台(共享)电脑上。​​
  • 尝试在 SQL Server Management Studio 中针对同一个 SQL Server 实例手动附加它,看看这个特定的 db 文件是否有效。
【解决方案2】:

在我之前的一个项目(C# 中的 winform 应用程序)中,我使用了一个数据库,比如“EmployeeMaster”。

对我有用的连接字符串是:

“数据源=(本地)\SQLExpress;初始目录=EmployeeMaster;Trusted_Connection=Yes;”

试一试。

【讨论】:

  • 好的。但是,我不想在我的本地电脑上创建数据库。我只想使用现有的 mdf 文件。有可能吗?
【解决方案3】:

我真的建议您定期将此 MDF 文件附加到本地实例,然后连接到数据库。在 asp.net 应用程序中附加 mdf 文件并不是最好的方法。

只需将连接字符串添加到您的应用程序配置文件中

<connectionStrings>
            <add name="yourConnectionString" connectionString=
"Data Source=(local); Initial Catalog=database_name;Integrated Security=True"     
 providerName="System.Data.SqlClient"/>
    </connectionStrings>

然后像这样在你的代码中使用它:

string ConString = ConfigurationManager.ConnectionStrings["yourConnectionString 
"].ConnectionString

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多