Android中的SQLite如何更新特定行

问题

我一直在尝试更新特定行一段时间,似乎有两种方法可以做到这一点。根据我的阅读和尝试,你可以使用:

execSQL(String sql)method

或者:

update(String table, ContentValues values, String whereClause, String[] whereArgs)method。

(让我知道这是不正确的,因为我是Android新手,对SQL很新。)

那么让我来看看我的实际代码。

myDB.update(TableName, "(Field1, Field2, Field3)" + " VALUES ('Bob', 19, 'Male')", "where _id = 1", null);

我想完成这个:

更新Field1,Field2和Field3,其中主键(_id)等于1。

Eclipse在"更新"一词的下方给了我一条红线,给了我这样的解释:

SQLiteDatabase类型中的方法update(String,ContentValues,String,String [])不适用于参数(String,String,String,null)

我猜我没有正确分配ContentValues。谁能指出我正确的方向?


#1 热门回答(246 赞)

首先制作一个ContentValues对象:

ContentValues cv = new ContentValues();
cv.put("Field1","Bob"); //These Fields should be your String values of actual column names
cv.put("Field2","19");
cv.put("Field2","Male");

然后使用更新方法,它现在应该工作:

myDB.update(TableName, cv, "_id="+id, null);

#2 热门回答(44 赞)

简单方法:

String strSQL = "UPDATE myTable SET Column1 = someValue WHERE columnId = "+ someValue;

myDataBase.execSQL(strSQL);

#3 热门回答(28 赞)

首先创建一个ContentValuesobject:

ContentValues cv = new ContentValues();
cv.put("Field1","Bob");
cv.put("Field2","19");

然后使用更新方法。注意,第三个参数是where子句。 "?"是一个占位符。它将被替换为第四个参数(id)

myDB.update(MY_TABLE_NAME, cv, "_id = ?", new String[]{id});

这是更新特定行的清除解决方案。