c# - C# 中的数据从 sdf 数据库中消失

标签 c# database visual-studio sdf

我正在运行一些实验来掌握在 C# 和 Visual Studio 中管理数据库背后的概念。我所做的是创建一个简单的 sdf 数据库,其中只有一个表“Books”,由两列组成 - 自动递增键“ID”和“Author”字段。我尝试创建一个 DataSet 对象来加载、修改和存储更改。该程序将两个数字写入控制台 - 从数据库加载数据后立即写入 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();
    }
}

我必须承认,目前我不知道可能出了什么问题 - 如果您有任何建议,我将不胜感激。

最佳答案

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

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

关于c# - C# 中的数据从 sdf 数据库中消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10298324/

相关文章:

c# - 应用第二次运行时拒绝访问文件

c# - 关于抛出和异常冒泡

visual-studio - VS2019 - 一些工具箱组件变灰

visual-studio - 如何为 DUB 包生成 PDB 文件?

c++ - 打开cv 3.0.0 LNK2019报错

c# - "Contract can' t be in try block”是什么意思?

c# - PHP 相当于 C# string.IsNullOrEmpty 方法?

mysql - 什么是聚簇索引表?

database - 测试自动化 - 初始化数据库状态

sql - 使用连接查询从四个不同的表中获取记录