在Windows窗体应用程序中遇到Sql Compact Database问题

时间:2011-09-10 05:20:39

标签: vb.net winforms visual-studio-2010 ado.net sql-server-ce

我已经搜索了很多关于我的问题但没有解决方案,所以我在这里发帖以获得专家的建议。

我正在制作一个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()

我正确打开关闭连接没有错误,有一些我无法弄清楚:)

1 个答案:

答案 0 :(得分:2)

如果您在Visual Studio中将SQLCE数据库添加到项目中,请查看其属性(在“解决方案资源管理器”中选择该文件并查看“属性”面板)。通常,数据库文件的Build Action设置为“Content”,Copy To Output选项设置为“Always Always”。这意味着,每次构建解决方案时,Visual Studio项目中的数据库(很可能是空的)都会重新复制到构建文件夹($ projectname $ \ bin \ Debug或\ Release)并用数据覆盖现有数据库在运行时添加。

要解决此问题,只需将“复制到输出”设置为“如果更新”,只要您的设计数据库文件发生更改,它就会覆盖您的数据。