How to use "UPDATE Products SET Price = Price + 50 WHERE ProductID = 1" this kind of SQlite statement in android?

huangapple go评论129阅读模式
英文:

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) 方法之一:

  1. db.execSQL("UPDATE Products SET Price = Price + 50 WHERE ProductID = 1");

或者使用 execSQL (String sql, Object[] bindArgs) 方法之一:

  1. db.execSQL(
  2. "UPDATE Products SET Price = Price + ? WHERE ProductID = ?",
  3. new String[] {"50", "1"}
  4. );
英文:

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):

  1. db.execSQL(&quot;UPDATE Products SET Price = Price + 50 WHERE ProductID = 1&quot;);

or with execSQL (String sql, Object[] bindArgs):

  1. db.execSQL(
  2. &quot;UPDATE Products SET Price = Price + ? WHERE ProductID = ?&quot;,
  3. new String[] {&quot;50&quot;, &quot;1&quot;}
  4. );

答案2

得分: 1

这可能对您有所帮助。使用 ContentValues() 的 db.update() 是更安全的更新方法。请检查这个方法。

  1. int i = 50;
  2. Cursor res = db.rawQuery("select * from Products where ProductId = 1 LIMIT 1");
  3. if (res.getCount() > 0) {
  4. i += Integer.parseInt(res.getString(res.getColumnIndex("Price")));
  5. }
  6. ContentValues values = new ContentValues();
  7. values.put("Price", Integer.toString(i));
  8. 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.

  1. int i = 50;
  2. Cursor res = db.rawQuery(&quot;select * from Products where ProductId = 1 LIMIT 1&quot;);
  3. if(res.getCount() &gt; 0){
  4. i += Integer.parseInt(res.getString(res.getColumnIndex(&quot;Price&quot;)));
  5. }
  6. ContentValues values = new ContentValues();
  7. values.put(&quot;Price&quot;, i.toString());
  8. db.update(&quot;Products&quot;,values,&quot;ProductId = ?&quot;,new String[]{&quot;1&quot;});

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); 您可以在此处阅读相关信息。用例可能如下所示:

  1. ContentValues cv = new ContentValues();
  2. cv.put("column_name", "updated value");
  3. 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:

  1. ContentValues cv = new ContentValues();
  2. cv.put(&quot;column_name&quot;, &quot;updated value&quot;);
  3. db.update(&quot;table_name&quot;, cv, &quot;column_id&quot; + &quot;=?&quot;,new String[]{&quot;primary_id&quot;});

答案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

  1. 你也可以尝试
  2. `db.execSQL(
  3. "UPDATE Products SET Price = ? WHERE ProductID = ?",
  4. new String[] {Price+50 , "1"}
  5. );`
英文:

You can also try

db.execSQL(
&quot;UPDATE Products SET Price = ? WHERE ProductID = ?&quot;,
new String[] {Price+50 , &quot;1&quot;}
);

huangapple
  • 本文由 发表于 2020年7月27日 16:44:39
  • 转载请务必保留本文链接:https://go.coder-hub.com/63111688.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定