12

当我执行此查询时,我得到'android.database.sqlite.SQLiteException:没有这样的列'错误是什么?

    public Cursor Getupdate(String rid) throws SQLException 
        {

Cursor m1Cursor = db.rawQuery("SELECT _id FROM  Meeting   where meet="+rid , null);
    if (m1Cursor != null) {           
        if(m1Cursor.getCount() > 0)
        {

             m1Cursor.moveToFirst();
        }
    }
 return m1Cursor;
}

日志猫

05-28 01:22:27.999: E/AndroidRuntime(1411): FATAL EXCEPTION: main
05-28 01:22:27.999: E/AndroidRuntime(1411): android.database.sqlite.SQLiteException: no such column: ttyuhomk: , while compiling: SELECT _id FROM  Meeting where meet=rage
4

5 回答 5

33

对于字符串数据类型,总是使用像这样的引号'"+rid+"'"因为 rid 是字符串,你会得到错误。

只有当 rid 是 int 时,才应该使用+rid 。

于 2013-05-29T17:20:04.257 回答
19

您需要在 Where 子句检查中使用撇号(') .. 像

db.rawQuery("SELECT _id FROM  Meeting   where meet='"+rid+"'" , null);
于 2013-05-29T17:16:09.327 回答
8

你也可以这样使用。

db.rawQuery("SELECT _id FROM  Meeting   where meet=?" ,
            new String [] {rid});

这也将解决 SQL 注入问题。

于 2014-09-25T05:13:19.143 回答
5

或者,更好的是,使用 PreparedStatement 并绑定您的变量。它会为您正确转义字符串和日期。它还有助于解决 SQL 注入问题。

于 2013-05-29T17:19:47.507 回答
0

只需使用单引号 ( '<YOUR_ID_TO_MATCH_WITH>')

如果上面的答案仍然不清楚,只需使用单引号将 where 子句括起来。

例如:db.update(TABLE_USER,contentValues, "$KEY_TOKEN='${token}'",null)

注意 中的引号'$token'。就是这样!

于 2021-02-15T20:04:03.830 回答