【问题标题】:Local database inserts not being stored未存储本地数据库插入
【发布时间】:2013-04-17 20:32:34
【问题描述】:

这可能是我的一个愚蠢的错误..但我似乎无法理解它。

我创建了一个新的空 C# Windows 窗体应用程序。

我添加了一个数据库(基于数据集)并将文件存储在我的解决方案资源管理器中。

我已经添加了一个表 Test 与列 Name。

我使用new SqlCeCommand("insert into Test values('Name')", new SqlCeConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString)).ExecuteNonQuery();添加记录

但是,我什至尝试检索相同的数据,并且一切正常。

但是当我停止我的项目并重建它时......所有数据又消失了?

有没有办法解决这个问题,或者当我开始使用这个项目来达到它的预期目的时这个问题会自行解决吗(没有每天重建 500 次?)

【问题讨论】:

    标签: c# database sql-server-ce


    【解决方案1】:

    您的数据库文件在项目中列出了这个属性

     Copy to destination directory = Copy Always
    

    如果这是真的,那么每次重新启动项目时,都会将数据库文件的新(空)副本从项目目录复制到输出目录(BIN\DEBUG 或 BIN\RELEASE),覆盖在上一次运行。您可以避免将属性更改为 Copy Never 或 Copy if newer

    【讨论】:

    • 如果我把它放在“从不复制”,它会给我一个“找不到文件错误”。如果 Newer 没有改变任何内容,则复制。
    • connectionString="Data Source=|DataDirectory|\Data\Database\Test.sdf" - 这是 \Data\Database\Test.sdf 也在我的 bin/debug 目录中找到
    • 好吧,我现在没有解释。我将尝试在VS IDE之外运行程序,并在第一次运行后检查数据是否仍然存在,但这并不能解决问题。
    【解决方案2】:

    steve 给出的答案是不断地在现有的数据库上复制数据库,这会导致删除所有数据。

    我已通过打开“始终复制”来解决此问题,然后在资源管理器中将数据库移动到其他位置并将其添加到项目中。这样数据库永远不会被覆盖,可以在程序中使用!

    (但是,如果/当我将项目发布到另一台计算机时,这可能会引发问题)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多