Android sqlite更新错误没有这样的列

时间:2017-07-24 09:05:17

标签: android sqlite sql-update android-sqlite

我目前正在Android应用程序中使用sqlite进行验证和实现。目的是制作搜索关键字历史记录。所以在这种情况下,我希望当用户输入相同的关键字但在不同的时间时,我想通过更新sqlite数据库中的“time”列来推送该关键字成为最新的关键字。

以下是代码:

ContentValues values = new ContentValues();
values.put(KEY_TIME, time);
sqLiteDatabase.update(TABLE_NAME_SEARCH, values, KEY_KEYWORD + " = " + keyword, null);

但它返回错误:

FATAL EXCEPTION: main
Process: com.lakupon, PID: 24030
android.database.sqlite.SQLiteException: no such column: a (code 1): , while compiling: UPDATE search SET time=? WHERE keyword = a

注意:在这种情况下,“a”是我输入两次的关键字,因此它尝试更新“关键字”值为“a”的行中的“时间”。

我不知道为什么它没有说这样的列,因为当我打印出数据列表时,有一行“关键字”值等于“a”,或者使其更简单,如果有的话没有这样的关键字,那么代码就不应该运行,因为我已经在外面进行了一些验证。

我也不知道为什么说“时间=?”因为当我打印出“时间”参数时,它有我想要的时间值,例如“20170724_154935”。

2 个答案:

答案 0 :(得分:2)

""是字符串,因此必须将其括在字符串分隔符')中。
像这样:... WHERE keyword = 'a'

答案 1 :(得分:0)

试试这个

ContentValues values = new ContentValues();
values.put(KEY_TIME, time);
sqLiteDatabase.update(TABLE_NAME_SEARCH,values,KEY_KEYWORD + "=?",new String[]{keyword});