如何在安卓中使用这种"UPDATE Products SET Price = Price + 50 WHERE ProductID = 1" SQlite语句?



我想更新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"} );

最新更新