1

我在 app.config 中定义了连接字符串

  <connectionStrings>
    <add name="StoreConnectionString"
    connectionString="Data Source=(local);MultipleActiveResultSets=True;AttachDBFileName=C:\Users\Firdavs\Desktop\Data\StoreServer.mdf;Integrated Security=True;User Instance=True;"
    providerName="System.Data.SqlClient" />  
  </connectionStrings>

我在我的应用程序中使用 c# 和 sql express。当我在我的机器上的 Visual Studio 中运行时,它工作正常。但是在创建设置并部署到其他机器之后。我正在编辑显示 AttachDBFileName=Path 的 .exe.config 文件。应用程序给我错误。Sql Express 安装在该机器上。我想附加不起作用。你有什么建议?请告诉我方向!

4

2 回答 2

2

问题在这里:“AttachDBFileName=C:\Users\Firdavs\Desktop\Data\StoreServer.mdf;”

当您将其部署到另一台机器时,该绝对路径的变化很小,相同...您需要提供虚拟路径...

您需要将 mdf 复制到同一目录中。然后在 Visual Studio 中确保当您选择 mdf 文件时,将“复制到输出目录”的属性更改为“如果较新则复制”(通过双击已列出的“不复制”文本来更改它那里)然后将 AttachDbFilename 更改为 ... AttachDbFilename=|DataDirectory|StoreServer.mdf;....

于 2012-11-16T07:27:13.577 回答
0

正如我之前在这个网站上所说的那样——整个User Instance 和 AttachDbFileName=方法是有缺陷的——充其量是!Visual Studio 将在.mdf文件周围进行复制,并且很可能,您的INSERT工作正常 - 但您最终只是查看了错误的 .mdf 文件

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

我认为真正的解决方案是

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

  2. 安装 SQL Server Management Studio Express

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

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

    Data Source=(local);Database=StoreServer;Integrated Security=True
    

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

当您部署到客户的 PC 时 - 执行相同的步骤:安装 SQL Server Express,在服务器上server=(local)创建数据库,使用(或方法)连接到它server=machinename- 并完成它!

于 2012-11-16T08:07:15.303 回答