基于服务的数据库

本文关键字:数据库 服务 于服务 | 更新日期: 2023-09-27 17:50:52

我需要存储由c#窗口表单应用程序生成的数据。我使用基于服务的数据库,我创建了我需要的表,然后我使用linq在这些表中插入值。我实际上通过使用它保存了我的数据,调试后我发现所有的数据都被擦除了。我找不到我在运行时给出的值。谁能帮我解决这个问题?我需要一个本地数据库来保存我的数据,我正在创建不使用SQL SERVER的win form应用程序在我的客户端系统。

基于服务的数据库

整个User Instance和AttachDbFileName=方法是有缺陷的-充其量!当你在Visual Studio中运行你的应用程序时,它会复制周围的.mdf文件(从你的App_Data目录到输出目录-通常是.'bin'debug -你的应用程序运行的地方)和最有可能,你的INSERT工作得很好-但你只是在看错误的。mdf文件在结束!

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

在我看来,真正的解决方案
  1. 安装SQL Server Express(你已经这样做了)

  2. install SQL Server Management Studio Express

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

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

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

    和其他的都是和以前完全一样的

我经历过类似的事情,可能是一样的。当您使用Data Source=|DataDirectory|'mydatabase.mdf时,数据库的副本保存在'bin'Debug'中。在调试模式下,数据将保存到此副本。

如果您提供数据库文件的完整路径,例如C:'xxxx'yyy'mydatabase,则可以解决此问题。MDF是不便携的。希望这是你想要的?

  1. 在App.Config文件中将路径更改为本地DB路径

    connectionString="Data Source=(LocalDB)'v11.0;AttachDbFilename=C:'Users'Gerry'documents'visual studio 2013'Projects'DatabaseLocalApplication'DatabaseLocalApplication' clients .mdf;Integrated Security=True"

这将引导保存操作到正确的数据库。您可以通过点击数据库并复制全路径属性

中的条目来获得该字符串

然后将数据库的Copy To Output目录设置为Do Not Copy