英文:
How to use "UPDATE Products SET Price = Price + 50 WHERE ProductID = 1" this kind of SQlite statement in android?
问题
我想更新特定行的列。我尝试使用语句使用'db.update()'来设置我的值。但是我无法成功。是否有任何方法可以使用标题的语句来设置列的特定行的值?
英文:
I want to update the a specific row of the Column.I tried to use the statement to set my value using 'db.update()'.But I cant.Is there any method which I can use to use the statement of the title to set the value of a specific row of a column?
答案1
得分: 1
尽管文档明确提到更新表的推荐和适当方式是使用 update()
方法,但您的要求只能通过 execSQL()
方法完成。<br/>
可以使用 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"}
);
英文:
Although the documentation explicitly mentions that the recommended and proper way to update a table is the method update()
, your requirement can only be done with execSQL()
.<br/>
Either with execSQL(String sql)
:
db.execSQL("UPDATE Products SET Price = Price + 50 WHERE ProductID = 1");
or with execSQL (String sql, Object[] bindArgs)
:
db.execSQL(
"UPDATE Products SET Price = Price + ? WHERE ProductID = ?",
new String[] {"50", "1"}
);
答案2
得分: 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", Integer.toString(i));
db.update("Products", values, "ProductId = ?", new String[]{"1"});
我不确定,但我认为问题可能是将 Price 列的数据类型设置为文本。如果是这样,请将其更改为整数。
英文:
This may help you. db.update() with ContentValues () is more safe updating method. Check this one.
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"});
I am not sure but I think that the problem may be setting Price column type as text. If so, change it integer.
答案3
得分: 0
要更新您的 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"});
英文:
To update your sql db use db.update(TABLE_NAME, values, where, whereArgs);
You can read about here.The use case can look like this:
ContentValues cv = new ContentValues();
cv.put("column_name", "updated value");
db.update("table_name", cv, "column_id" + "=?",new String[]{"primary_id"});
答案4
得分: 0
update()
只适用于 ContentValues
,它是用于 SQL 变量绑定的包装器。您只能绑定值,而不能绑定诸如 Price + 50
之类的表达式。
要使用类似的表达式,可以使用带有您已经拥有的原始 SQL 字符串的 execSQL()
。
英文:
update()
only works with ContentValues
which is a wrapper for SQL variable binding. You can only bind values, not expressions like Price + 50
.
To use an expression like that, use execSQL()
with the raw SQL string you already have.
答案5
得分: 0
你也可以尝试
`db.execSQL(
"UPDATE Products SET Price = ? WHERE ProductID = ?",
new String[] {Price+50 , "1"}
);`
英文:
You can also try
db.execSQL(
"UPDATE Products SET Price = ? WHERE ProductID = ?",
new String[] {Price+50 , "1"}
);
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论