一尘不染

在Android中预填充数据库的最快,最高效的方法

sql

如果要在Android中预填充数据库(SQLite),这并非您想象的那么容易。

因此,我找到了本教程该教程在Stack Overflow上也经常被引用。

但是我真的不喜欢这种预填充数据库的方式,因为您可以从数据库处理程序中获取控件并自己创建文件。我宁愿不要碰文件系统,而让数据库处理程序自己做所有事情。

因此,我认为可以做的就是照常在数据库处理程序的onCreate()中创建数据库,然后从/ assets加载文件(.sql),该文件包含用于填充值的语句:

INSERT INTO testTable (name, pet) VALUES ('Mike', 'Tiger');
INSERT INTO testTable (name, pet) VALUES ('Tom', 'Cat');
...

但是在处理程序的onCreate()中调用execSQL()并不能真正起作用。似乎/
assets文件的大小不能超过1MB,并且execSQL()仅执行第一条语句(Mike-Tiger)。

您将如何预填充数据库?


阅读 129

收藏
2021-03-17

共1个答案

一尘不染

我建议以下内容:

  1. 将所有INSERT逻辑包装到事务中(BEGIN... COMMIT或通过beginTransaction()endTransaction() API)
  2. 如已经建议的那样,利用绑定API和 回收对象
  3. 此批量插入完成之前 请勿创建任何索引。

另外看看sqlite3中的Faster批量插入吗?

2021-03-17