【问题标题】:Android sqlite update error no such columnAndroid sqlite更新错误没有这样的列
【发布时间】:2017-07-24 09:05:17
【问题描述】:

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

代码如下:

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”。

【问题讨论】:

    标签: android sqlite sql-update android-sqlite


    【解决方案1】:

    “a”是一个字符串,因此它必须包含在字符串分隔符中(')。
    像这样:... WHERE keyword = 'a'

    【讨论】:

      【解决方案2】:

      试试这个

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-02-09
        • 2015-09-07
        • 1970-01-01
        • 1970-01-01
        • 2019-04-05
        • 1970-01-01
        • 2013-09-10
        • 2015-02-25
        相关资源
        最近更新 更多