在我的 Windows 窗体应用程序中遇到 Sqlcompact 数据库问题

Posted

技术标签:

【中文标题】在我的 Windows 窗体应用程序中遇到 Sqlcompact 数据库问题【英文标题】:Having trouble with Sqlcompact Database in my Windows Form Application 【发布时间】:2011-09-10 05:20:38 【问题描述】:

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

我正在制作一个 Windows 窗体应用程序,并使用 Sql 紧凑型数据库。

我的问题:

当我使用代码(运行时)在数据库中插入记录时,它们被插入、删除、更新,我可以在我的应用程序中看到它们被更新、插入、删除,但是当我关闭应用程序并重新启动几次时他们被改变了,一百万次:)。否则我再次看到空白数据库,或者如果我直接从解决方案资源管理器 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()

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

【问题讨论】:

some thing not related' - 你为什么将 CE 数据库用于桌面应用程序(很想知道) 你可以说必须给某人,所以对方只知道如何运行,如果我使用其他人,他必须更改连接字符串等。 我有点弄清楚问题所在,每当我构建我的解决方案时,新数据都会被删除,否则无论我运行多少次它都会保留.. 但为什么会这样呢?谢谢 您的 sql 代码容易受到注入攻击。不要使用字符串连接来替换这样的参数值。 【参考方案1】:

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

要解决这个问题,只需将 Copy To Output 设置为“If newer”,只要您的设计数据库文件发生更改,它就会覆盖您的数据。

【讨论】:

谢谢。我有点想通了,但不知道原因:),请记住这一点。

以上是关于在我的 Windows 窗体应用程序中遇到 Sqlcompact 数据库问题的主要内容,如果未能解决你的问题,请参考以下文章

在我的 .NET Windows 窗体上实现从 Chrome 拖放

C#。当我尝试检查用户是不是存在于我的 SQL 数据库中时,我的 Windows 窗体应用程序崩溃

运行 CMD 和 ffmpeg Windows 窗体

Connectionstring:它是正确的形式吗?

如何将我的 VBA 宏转换为 C# 以在 Windows 窗体应用程序中使用?

创建文件后从 Windows 窗体保存 C#