Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android sqlite和多个查询_Android_Sqlite_Query Optimization - Fatal编程技术网

Android sqlite和多个查询

Android sqlite和多个查询,android,sqlite,query-optimization,Android,Sqlite,Query Optimization,为了填充我的数据库,我有一些类似的循环: for (int i=0;i<something;++i){ myDatabase.insert(...); } String queries=""; for (int i=0;i<something;++i){ queries += "my query;"; } myDatabse.execSQL(queries); for(int i=0;i您可以尝试用“BEGIN”和“COMMIT”事务将这些插入行括起来。SQLite将

为了填充我的数据库,我有一些类似的循环:

for (int i=0;i<something;++i){
   myDatabase.insert(...);
}
String queries="";
for (int i=0;i<something;++i){
   queries += "my query;";
}
myDatabse.execSQL(queries);

for(int i=0;i您可以尝试用“BEGIN”和“COMMIT”事务将这些插入行括起来。SQLite将每个DML和DDL调用包装在事务块中,创建事务日志,例如,在插入之后,它将删除它并再次重复(对于您的第一个代码示例)


当您手动执行TCL命令时,SQLite数据库将离开自动事务模式,并将按照您的要求执行。

您是否尝试过在一条语句中插入多行?类似如下:

INSERT INTO table (c1, c2, c3) VALUES
(1, 2, 3),
(4, 5, 6),
....

您也可以尝试将插入内容包装在一个事务中。将所有工作放在一个事务中可以避免每次插入锁定的开销。

您应该通过一个事务执行所有请求:

db.beginTransaction();
try {
    ...
    db.setTransactionSuccessful();
} finally {
    db.endTransaction();
}

由于只使用一个事务,运行时已被7除,我将再次尝试此操作以减少它;)