使用Array的Android SQLite更新列

时间:2015-03-11 19:46:23

标签: java android arrays sqlite

考虑以下SQLite表

enter image description here

以下代码片段用于在" bit"更新职位,工作正常。

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"};

1 个答案:

答案 0 :(得分:2)

基本上你不能。但是,您可以使用一个事务上下文来加速插入:

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;)