java - Android SQLite 使用数组更新列

标签 java android arrays sqlite

考虑以下 SQLite 表

enter image description here

下面的代码 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/

相关文章:

java - this.getApplication()).getQuery() 总是返回 null

java - 如何在 Tomcat 停止时停止执行程序线程?

android - popBackStack导致反复调用fragment的oncreateView

android - layout-finger 和 layout directory 的区别

c++ - 如何在 C/C++ 中获取多维数组的列?

javascript - MVC4 ModelState 属性名称到 JSON 或 Array

java - Spring Autowiring 参数化泛型类型

java - 是否可以从 xml 加载 java 类型

Android:在onItemClickListener 中的onClick 更改图像两次

javascript - JQuery - 将多个/变量表值连接成一个字符串