我有一个目前执行速度很慢的 android sqlite 数据库。
根据提高 SQLite 的每秒插入性能的建议?如果插入例程失败,我已从执行更新更改为仅使用替换(与 REPLACE INTO 相同,也称为 INSERT OR REPLACE)
我现在想从一次更换一个变为一次更换数百个
static ArrayList<ContentValues> cvs= new ArrayList<ContentSystem>();
_dh.BeginTransaction(Table);
for(int i = 0; i < cvs.size(); ++i)
{
replace(ma, cvs.get(i), dh, Table, Key);
}
_dh.EndTransaction(Table);
使用批量系统
SQLiteStatement stmt = _dh.db.compileStatement("Replace into tablename(..) value (?,?)");
_dh.BeginTransaction(Table);
for(int i = 0; i < cvs.size(); ++i)
{
stmt.bindString(cvs.get(i));
}
stmt.execute();
_dh.EndTransaction(Table);
但我不明白 compile 语句的外观,也不明白我将在绑定字符串函数中放入什么 - 我将数据存储在 contentvalue 中
也来自这个http://developer.android.com/reference/android/database/sqlite/SQLiteStatement.html#execute()
执行此 SQL 语句,如果不是 SELECT / INSERT / DELETE / UPDATE,例如 CREATE / DROP 表、视图、触发器、索引等。
看来执行调用不适用于替换??因为它正在执行插入/更新,这是正确的吗?
这是我的数据库的设置方式,以及我如何使用替换调用 http://sqlfiddle.com/#!7/b8af8/1