我目前正在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”。
答案 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});