数据在 C# 中从 sdf 数据库中消失

本文关键字:数据库 消失 sdf 中从 数据 | 更新日期: 2023-09-27 18:32:08

我正在进行一些实验,以掌握在C#和Visual Studio中管理数据库背后的概念。我所做的是创建一个简单的sdf数据库,只有一个表"Books",由两个列组成 - 自动递增键"ID"和"作者"字段。我尝试创建一个数据集对象来加载、修改和存储更改。程序将两个数字写入控制台 - 从数据库加载数据后立即写入 DataSet 中的行数,以及修改数据后但在将其更新到 sdf 之前的一个数字。

发生的事情,让我完全不知所措的是:
第一次运行,我得到了我期望看到的,即 0 1 - 空表已成功加载,并且一个项目已添加到数据集中。

当我再次运行代码时,我得到 1 2。然后是 2 3、3 4 等等,正如预期的那样。直到我刷新数据库并尝试通过服务器资源管理器查看其内容 - 我看到的只是空表。此外,当我之后再次运行该程序时,我像开始时一样得到 0 1 响应。

这是我使用的代码:

namespace DatasetTesting{
class Program
{
    static void Main(string[] args)
    {
        string conString = "Data Source=Books.sdf;Persist Security Info=False;Password=pass";
        SqlCeConnection objConn = new SqlCeConnection(conString);
        objConn.Open();
        SqlCeDataAdapter da = new SqlCeDataAdapter("Select * from Books", objConn);
        BooksDataSet booksSet = new BooksDataSet();
        da.FillSchema(booksSet,SchemaType.Source, "Books");
        da.Fill(booksSet, "Books");
        Console.Out.WriteLine(booksSet.Books.Rows.Count);
        BooksDataSet.BooksRow book = booksSet.Books.NewBooksRow();
        book.Author = "Tolkien";
        booksSet.Books.AddBooksRow(book);
        Console.Out.WriteLine(booksSet.Books.Rows.Count);
        SqlCeCommandBuilder comBuilder = new SqlCeCommandBuilder(da);
        da.Update(booksSet, "Books");
        Console.In.ReadLine();
    }
}

我必须承认,在这一点上,我不知道可能出了什么问题 - 我将不胜感激任何建议。

数据在 C# 中从 sdf 数据库中消失

您是否将.sdf复制到项目中?

.sdf复制到写入数据的项目似乎是一个常见的错误 - 然后您的 SQL 工作室经理正在查看不同的数据库。

我已经很久

没有做过数据适配器了,但是查看MSDN文档,我认为您必须调用

da.UpdateCommand = comBuilder.GetUpdateCommand();

更新之前。