我需要存储由 C# 窗体应用程序生成的数据。我使用基于服务的数据库并创建了我需要的表,然后我使用 linq 在这些表中插入值。我实际上是通过使用它保存了我的数据,调试后我发现所有数据都被删除了。我找不到我在运行时给出的值。任何人都可以帮我解决它吗?我需要一个本地数据库来保存我的数据,我正在创建在我的客户端系统中不使用 SQL SERVER 的 win 表单应用程序。
3 回答
整个User Instance 和 AttachDbFileName=方法是有缺陷的 - 充其量!在 Visual Studio 中运行您的应用程序时,它将围绕.mdf
文件进行复制(从您的App_Data
目录到输出目录 - 通常.\bin\debug
是您的应用程序运行的位置),并且很可能,您的INSERT
工作正常 - 但您只是看错了 . mdf文件到底!
如果您想坚持使用这种方法,请尝试在myConnection.Close()
调用上设置断点 - 然后.mdf
使用 SQL Server Mgmt Studio Express 检查文件 - 我几乎可以肯定您的数据在那里。
我认为真正的解决方案是
安装 SQL Server Express(反正你已经完成了)
安装 SQL Server Management Studio Express
在SSMS Express中创建您的数据库,给它一个逻辑名称(例如
YourDatabase
)使用它的逻辑数据库名称(在服务器上创建它时给出)连接到它——不要乱用物理数据库文件和用户实例。在这种情况下,您的连接字符串将类似于:
Data Source=.\\SQLEXPRESS;Database=YourDatabase;Integrated Security=True
其他一切都和以前完全一样...
我经历过类似的事情,可能是一样的。当\bin\Debug\
您使用Data Source=|DataDirectory|\mydatabase.mdf
. 在调试模式下,您的数据将保存到此副本。
如果您提供数据库文件的完整路径,例如不可移植的 C:\xxxx\yyy\mydatabase.mdf,则可以解决此问题。希望这是你想要的?
在 App.Config 文件中将路径更改为本地数据库路径
connectionString="数据源=(LocalDB)\v11.0;AttachDbFilename= C:\Users\Gerry\documents\visual studio 2013\Projects\DatabaseLocalApplication\DatabaseLocalApplication \Customers.mdf;Integrated Security=True"
这会将保存操作定向到正确的数据库。您可以通过单击数据库并复制完整路径属性中的条目来获取此字符串
然后将数据库的复制到输出目录设置为不复制