如何批量查询SQLite数据库

时间:2014-04-15 21:41:19

标签: c# sql .net sqlite

我在.NET 4.5中使用C#。我正在制作一个收集特定数据的刮刀。每次刮取值时,我都需要确保它尚未添加到SQLite数据库中。

为了做到这一点,每次抓取一个值来查询db以检查它是否包含该值时,我都会调用,如果没有,我再次调用将值插入db。

由于我每秒都在刮取多个值,因此对数据库的持续调用会产生非常大量的IO。

我的问题是,有没有更好的方法呢?也许我可以将刮掉的值排队,然后立即运行批量查询?这可能吗?

1 个答案:

答案 0 :(得分:1)

我看到三种方法:

  1. 使用INSERT OR IGNORE,如果条目已存在,将拒绝该条目(基于主键和唯一字段)。或者简单地INSERT(或其等价物(INSERT or ABORT)将返回SQLITE_CONSTRAINT,如果您想要计算失败的插入数,则必须捕获和管理的值。
  2. 在数据库外部累积您要进行的更新。当您累积足够/全部时,启动一个事务(BEGIN;),进行插入(您也可以在这里使用INSERT OR IGNORE),提交事务(COMMIT;
  3. 如果您的数据模型允许,您可以预先获取已有的项目列表,并检查该列表。