sqlite db update

har*_*rsh 4 sqlite android

有没有一种简单的方法来更新android中sqlite中的表?(就像建造方法中的单行)?我有一个几列的表,主列是一列.我想通过主键搜索,然后更新表中的行.

waq*_*lam 13

要使用android的预定义更新方法,请使用如下:

ContentValues args = new ContentValues();
args.put("col_name", "new value");

db.update("table_name", args, String.format("%s = ?", "primary_column"),
           new String[]{"primary_id"});
Run Code Online (Sandbox Code Playgroud)

或者作为单行运行,请使用此(不推荐):

db.execSQL("UPDATE table_name SET col_name='new_value' WHERE
           primary_column='primary_id'");
Run Code Online (Sandbox Code Playgroud)


Mer*_*lin 6

阅读SQLiteDatabase.update的文档

你应该得到这样的东西:

affected = db.update(TABLE_NAME, values, where, whereArgs);

UDPATE

不惜一切代价避免使用容易出错的语法进行原始查询.我在这里看到很多答案,这些答案使用了很多'"' + SOMETHING + "'"......这是非常糟糕的做法,你会把所有的时间花在寻找难以找到的地方的错误上,或者只是完全浪费时间.

如果必须使用原始查询,请尝试使用String.format形成它们,以避免危险的调试会话和偏头痛.


GAM*_*AMA 3

rawQuery你可以这样使用:

cur = mDb.rawQuery("update " + TABLE_NAME
+ " set column1=mango where id='" + _id + "'",null);
Run Code Online (Sandbox Code Playgroud)

在哪里

  • curCursor对象
  • TABLE_NAMENAME OF THE TABLE
  • _idname of the column(仅示例)

  • 通过使用 string.format 构建查询来避免使用容易出错的语法,即 `String.format("update %s set column1=%s where id='%s'",TABLE_NAME,"mango",_id)` @Waqas答案更正确,因为它允许在不更改代码的情况下更新可变数量的字段。 (2认同)