0

我正在使用 sql server 数据库在 C# 中开发 Windows 窗体应用程序。我可以插入和检索数据,但只能在运行时。如果我再次运行它,它不会显示以前插入的数据。

connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\DB.mdf;Integrated Security=True;User Instance=True"
4

2 回答 2

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中创建您的数据库,给它一个逻辑名称(例如MyDB

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

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

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

于 2013-06-18T12:52:38.303 回答
0

我有一个类似的问题。

您可以删除 bin 文件夹中的 .mdf 和日志文件,然后将 app.config 文件中的路径更改为如下所示

connectionString="数据源=.\SQLEXPRESS;AttachDbFilename=C:\Path \yourdatabasefile.mdf;集成安全=True;用户实例=True"

于 2015-05-09T14:23:45.887 回答