考虑以下 SQLite 表
下面的代码 fragment 用于更新“位”位置的值,工作正常。
SQLiteDatabase db = myDbHelper.getReadableDatabase();
ContentValues values = new ContentValues();
values.put("value", "1");
db.update("registro_status", values, "bit=1", null);
如何使用像
这样的数组一次设置整个“值”列String[] valuearray = {"1","0","1","0","1","0","1","0","1","0 ","1","0","1","0","1"};
?
最佳答案
基本上你不能。但是,您可以通过使用一个事务上下文来加快插入速度:
SQLiteDatabase db = myDbHelper.getReadableDatabase();
ContentValues values = new ContentValues();
db.beginTransaction();
try{
int bit = 1;
for (String value: valuearray) {
values.put("value", value);
db.update("registro_status", values, "bit=" +bit++, null);
}
db.setTransactionSuccessful();
} catch(Exception e) {
Log.e(“Error in transaction”, e.toString());
} finally {
db.endTransaction();
}
这通常比逐条插入记录快得多。
或者,如果您对 SQL 感到满意,您可以实现一个 INSERT
语句:
String sql = "INSERT OR REPLACE INTO registro_status (bit, value) VALUES ";
int bit = 1;
for (String value: valuearray) {
sql = sql+ "("+ bit +", " +value +"),";
}
// cut last comma and add semi colon
sql = sql.substring (0, sql.length() -1) +";";
db.execSQL(sql);
p.s.:请注意上面的更新 - 我忘记了 update
;)
关于java - Android SQLite 使用数组更新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28995976/