我正在努力学习使用SQLite,但我非常沮丧和困惑。我已经找到了System.Data.SQLite,这显然是在C#中用于SQLite的东西。
该网站没有任何文件。从2010年开始显然已经过时的“原始网站”也没有任何文档。我可以找到一些博客教程,但从我可以告诉他们的操作方法基本上是:
我不想在我的C#代码中编写SQL语句,它们很难看,我得不到IDE的帮助,因为我必须把SQL代码放在字符串中。
我不能只是:
DataSet
。DataSet
它应该与SQLite数据库MyDB.sqlite
对应。DataSet
。DataSet
会自动与光盘上的SQLite数据库保持同步。我知道我可以使用数据库的内容填充DataSet
,但是如果我想访问整个数据库,我将必须用DataSet
填充所有内容。如果我的数据库是1 GB,我刚刚用完了1 GB的RAM(更不用说一次写下所有内容所需的时间)。
我不能简单地接受一个SQLite数据库连接并假装它只是一个普通的DataSet
(如果它已完成同步,可能需要偶尔询问)?
答案 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的数据?