2

新手在这里。

我的程序中有一个本地数据库。在开发程序时,我使用了 SQL

连接字符串:

SqlConnection sconn = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Users\leemk_000\Documents\......Integrated Security=True;User Instance=True;");

现在,如果我想将此程序加载到另一台计算机上,我确信此连接将不再工作,因为它仍在寻找Users\Lee_000\

我试图删除 Lee_000 但我收到以下错误:

尝试为文件 C:\Users\Documents..... 附加自动命名数据库失败。存在同名数据库,或无法打开指定文件,或位于 UNC 共享上。

我该怎么做才能让连接字符串在不同的计算机上工作。

非常感谢

4

3 回答 3

5

整个User Instance 和 AttachDbFileName=方法是有缺陷的 - 充其量 -特别是当您想在多个客户端之间共享您的数据库时!

在 Visual Studio 中运行您的应用程序时,它将围绕.mdf文件进行复制(从您的App_Data目录到输出目录 - 通常.\bin\debug是您的应用程序运行的位置),并且很可能,您的INSERT工作正常 - 但您只是看错了 . mdf文件到底!

如果您想坚持使用这种方法,请尝试在myConnection.Close()调用上设置断点 - 然后.mdf使用 SQL Server Mgmt Studio Express 检查文件 - 我几乎可以肯定您的数据在那里。

我认为真正的解决方案是

  1. 安装 SQL Server Express(反正你已经完成了)

  2. 安装 SQL Server Management Studio Express

  3. 在SSMS Express中创建您的数据库,给它一个逻辑名称(例如YourDatabase

  4. 使用它的逻辑数据库名称(在服务器上创建它时给出)连接到它——不要乱用物理数据库文件和用户实例。在这种情况下,您的连接字符串将类似于:

    Data Source=.\\SQLEXPRESS;Database=YourDatabase;Integrated Security=True
    

    其他一切都和以前完全一样......

于 2013-04-03T09:08:59.807 回答
3

如果它是本地数据库,您应该将其放在应用程序文件夹中并与应用程序一起携带,对吗?将数据库放在应用程序的 App_data 文件夹中,并在连接字符串中使用它

   <add name="YourConnectionString" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\yourfile.mdf;Integrated Security=True;User Instance=True" providerName="System.Data.SqlClient"/>
于 2013-04-03T09:20:16.337 回答
1

您需要使用数据库服务器并让您的用户通过您的连接字符串使用它,如下所示;

Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword;

“myServerAddress”应该是您的服务器机器的 IP 地址。

于 2013-04-03T09:09:44.653 回答