我已经搜索了很多关于我的问题但没有解决方案,所以我在这里发帖以获得专家的建议。
我正在制作一个Windows窗体应用程序,并使用Sql compact database。
我的问题:
当我使用代码(运行时)在数据库中插入记录时,它们被插入删除,更新,我可以看到它们在我的应用程序中更新,插入,删除,但是当我关闭应用程序并再次启动时他们被改变了,一次一百万:)。否则我再次看到空白数据库,或者如果我直接从解决方案资源管理器Visual Studio 2010中将值放入数据库中,它们将永远存在。我使用简单的更新,插入,删除语句,但不确定为何在关闭应用程序时对数据库所做的更改会消失。
首先这对所有人来说:
Dim con As New SqlCeConnection
Dim command As New SqlCeCommand
connectionString = "Data Source=SqlCompactDatabase/RestaurantDatabase.sdf"
con.ConnectionString = connectionString
command.Connection = con
con.Open()
我的插入代码:
command.CommandText = "Insert into Inventory(itemcode,itemmin,itemmax,itemdesc) Values('" + itmcod + "','" + min + "','" + max + "','" + desc + "')"
command.ExecuteScalar()
我的更新代码:
command.CommandText = "update Inventory set itemMin='" + min + "',itemMax='" + max + "',instock='" + stock + "',itemDesc='" + desc + "' where itemcode='" + TextBox1.Text + "'"
command.ExecuteScalar()
我的删除代码:
command.CommandText = "delete from inventory where itemcode='" + TextBox1.Text + "'"
command.ExecuteScalar()
我正确打开关闭连接没有错误,有一些我无法弄清楚:)
答案 0 :(得分:2)
如果您在Visual Studio中将SQLCE数据库添加到项目中,请查看其属性(在“解决方案资源管理器”中选择该文件并查看“属性”面板)。通常,数据库文件的Build Action设置为“Content”,Copy To Output选项设置为“Always Always”。这意味着,每次构建解决方案时,Visual Studio项目中的数据库(很可能是空的)都会重新复制到构建文件夹($ projectname $ \ bin \ Debug或\ Release)并用数据覆盖现有数据库在运行时添加。
要解决此问题,只需将“复制到输出”设置为“如果更新”,只要您的设计数据库文件发生更改,它就会覆盖您的数据。