是否可以使DataSet自动与SQLite数据库同步?

时间:2012-12-20 13:07:09

标签: c# .net sqlite ado.net

我正在努力学习使用SQLite,但我非常沮丧和困惑。我已经找到了System.Data.SQLite,这显然是在C#中用于SQLite的东西。

该网站没有任何文件。从2010年开始显然已经过时的“原始网站”也没有任何文档。我可以找到一些博客教程,但从我可以告诉他们的操作方法基本上是:

  1. 初始化数据库连接。
  2. 将SQL语句提供给连接。
  3. 拿出连接中出来的东西。
  4. 关闭连接。
  5. 我不想在我的C#代码中编写SQL语句,它们很难看,我得不到IDE的帮助,因为我必须把SQL代码放在字符串中。

    我不能只是:

    • 创建DataSet
    • 告诉DataSet它应该与SQLite数据库MyDB.sqlite对应。
    • 使用其成员函数操作DataSet
    • 不用担心SQLite,因为DataSet会自动与光盘上的SQLite数据库保持同步。

    我知道我可以使用数据库的内容填充DataSet,但是如果我想访问整个数据库,我将必须用DataSet填充所有内容。如果我的数据库是1 GB,我刚刚用完了1 GB的RAM(更不用说一次写下所有内容所需的时间)。

    我不能简单地接受一个SQLite数据库连接并假装它只是一个普通的DataSet(如果它已完成同步,可能需要偶尔询问)?

3 个答案:

答案 0 :(得分:2)

问题的答案是否定的 不,你不能简单地把SQLite连接假装它只是一个DataSet。

如果您不想编写SQL语句,请考虑实体框架 Using SQLite Embedded Database with Entity Framework and Linq-to-SQL

答案 1 :(得分:1)

您不应将DataSet视为数据库。这只是查询的结果。

您查询数据库以获取子集数据(您永远不需要数据库中的所有数据),并使用此子集填充您的DataSet

您需要手动同步更改,因为DataSet不知道哪些更新应属于哪个事务。这是你的系统知识。

答案 2 :(得分:0)

DataSet是内存缓存,只有在开发人员允许的情况下才会与底层数据存储同步。您可以将计时器包装器放入并按计划执行,但仍需要手动同步数据集和数据存储。

实际上不推荐存储1GB +的数据,因为内存使用率非常高且性能非常低。您也不希望通过网络或上帝发送该数量的数据,禁止互联网连接。

为什么要在内存中保留1GB的数据?