我的android设备上有一个主sqlite数据库(大量数据)和一个更新sqlite-database。 (数据我想更新)。 我想使用我的android应用程序在update-db中使用表(相同结构)的数据更新main-db中的表。 - 意味着删除更新中存在的main中的所有行。 - 将所有内容从更新插入到主页。
到目前为止,我的方法是:
attach db 'path to update' updatedb
delete from mytable where id in ( select id from updatedb.mytable )
insert into mytable select * from mytable
删除和插入非常慢(在我看来)。 有没有办法更快地做到这一点?
答案 0 :(得分:0)
使用批量插入插入大量数据。这是代码:
在您的databaseHelper中:
public void batchInsert(String sql, ArrayList<String[]> values) {
SQLiteDatabase db = getWritableDatabase();
db.beginTransaction();
SQLiteStatement stmt = db.compileStatement(sql);
for (int i = 0; i < values.size(); i++) {
String[] record = values.get(i);
for (int ii = 0; ii < record.length; ii++) {
stmt.bindString(ii + 1, record[ii]);
}
stmt.execute();
stmt.clearBindings();
}
db.setTransactionSuccessful();
db.endTransaction();
db.close();
}
在您的活动中:
ArrayList<String[]> dataBatch = new ArrayList<String[]>();
int x = 0;
for (Data data : dataList) {
String[] dataArray = { data.getData1(),data.getData2(),data.getData2() };
dataBatch.add(questionsArray);
}
String sql = "INSERT INTO data ";
sql += "(data1, data2, data3) ";
sql += "VALUES (?,?,?)";
DatabaseHelper dbhelper = new DatabaseHelper(context);
dbhelper.batchInsert(sql, dataBatch);
基本上,您对databaseHelper的执行可能会有所不同。但那就是如何批量插入大量数据。