问题
我一直在尝试更新特定行一段时间,似乎有两种方法可以做到这一点。根据我的阅读和尝试,你可以使用:
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});
这是更新特定行的清除解决方案。