我一直在尝试更新特定行一段时间,似乎有两种方法可以做到这一点 . 根据我的阅读和尝试,你可以使用:
execSQL(String sql)
方法
或者:
update(String table, ContentValues values, String whereClause, String[] whereArgs)
方法 .
(让我知道这是不正确的,因为我是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 . 谁能指出我正确的方向?
16 回答
为了方便起见,我个人更喜欢.update . 但execsql也会一样 .
您的猜测是正确的,问题是您的内容 Value . 您应该创建一个ContentValue对象并将数据库行的值放在那里 .
此代码应修复您的示例:
如果您的sqlite行具有唯一ID或其他等效项,则可以使用where子句,如下所示
对于更新,需要调用setTransactionSuccessfull来进行更改以获得提交,如下所示:
首先制作一个ContentValues对象:
然后使用更新方法,它现在应该工作:
试试这种方式
希望这会对你有所帮助:
在你的DB中使用这个代码
要在sample.java中更新,请使用此代码
您在SQLite中尝试这一个更新方法
//这是一些简单的更新示例代码
//首先声明这个
//初始化以下内容
//更新代码
// put ur id而不是'question mark'是我共享偏好中的一个函数 .
可以尝试这样:
简单方法:
你可以试试这个......
SQLite中的更新方法:
首先创建一个ContentValues对象:
然后使用更新方法 . 注意,第三个参数是where子句 . “?”是一个占位符 . 它将被替换为第四个参数(id)
这是更新特定行的清除解决方案 .