0

我在用 java 更新 sqlite 数据库中的 varchar 时遇到问题。当我运行这个源时,我得到一个错误。我希望字符串 a 更新为字符串 b。

这是我的来源:

public void onClick (View v){
String a = "Test1";
String b = "Test2";

    db = openOrCreateDatabase("MyDB", MODE_PRIVATE, null); 
                 ContentValues values = new ContentValues();
                 values.put("Level1", b);
                     db.update("Game", values, a, null);
                 db.close();
}

这是我的错误:

Error updating Level1=Test2 using update Game SET Level1=? WHERE Test1.

有人能帮我吗?谢谢!

4

2 回答 2

0

update Game SET Level1=? WHERE Test1.

Test1 在哪里……什么?更新语句的条件部分在哪里。它期待类似的东西:

update Game SET Level1=? WHERE ColumnName='Test1'


取自网站:

If the UPDATE statement does not have a WHERE clause, all rows in the table are modified by the UPDATE. Otherwise, the UPDATE affects only those rows for which the result of evaluating the WHERE clause expression as a boolean expression is true.

String 本身绝不是布尔表达式。

于 2013-04-10T18:30:39.467 回答
0

我不是 100% 确定您要实现什么,但是,您添加a为 where 子句并且没有提供任何参数,因此您得到了错误中显示的 SQL 语句。

API

public int update (String table, ContentValues values, 
                   String whereClause, String[] whereArgs)

这个工作...

db = openOrCreateDatabase("MyDB", MODE_PRIVATE, null); 
ContentValues values = new ContentValues();
values.put("Level1", b);
db.update("Game", values, "Level1=?", new String[] {a} );
db.close();

...如果这是您要执行的结果 SQL:

update Game SET Level1=? WHERE Level1 = 'Test1'
于 2013-04-10T18:31:21.223 回答