我想更新Column的特定行。我试图使用该语句使用"db.update(("设置我的值,但我做不到。有什么方法可以用来使用标题语句来设置列中特定行的值吗?
尽管文档明确提到更新表的推荐和正确方法是方法update()
,但您的需求只能用execSQL()
来完成
使用execSQL(String sql)
:
db.execSQL("UPDATE Products SET Price = Price + 50 WHERE ProductID = 1");
或使用execSQL (String sql, Object[] bindArgs)
:
db.execSQL(
"UPDATE Products SET Price = Price + ? WHERE ProductID = ?",
new String[] {"50", "1"}
);
这可能会对您有所帮助。带有ContentValues((的db.update((是更安全的更新方法。检查这个。
int i = 50;
Cursor res = db.rawQuery("select * from Products where ProductId = 1 LIMIT 1");
if(res.getCount() > 0){
i += Integer.parseInt(res.getString(res.getColumnIndex("Price")));
}
ContentValues values = new ContentValues();
values.put("Price", i.toString());
db.update("Products",values,"ProductId = ?",new String[]{"1"});
我不确定,但我认为问题可能是将"价格"列类型设置为文本。如果是,请将其更改为整数。
要更新您的sql数据库,请使用db.update(TABLE_NAME, values, where, whereArgs);
。您可以在此处阅读。用例可以是这样的:
ContentValues cv = new ContentValues();
cv.put("column_name", "updated value");
db.update("table_name", cv, "column_id" + "=?",new String[]{"primary_id"});
update()
只能与ContentValues
一起使用,后者是SQL变量绑定的包装器。只能绑定值,而不能绑定像Price + 50
这样的表达式。
要使用这样的表达式,请将execSQL()
与已有的原始SQL字符串一起使用。
您也可以尝试
db.execSQL( "UPDATE Products SET Price = ? WHERE ProductID = ?", new String[] {Price+50 , "1"} );