当我执行此查询时,我得到'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;
}
logcat的
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
答案 0 :(得分:28)
对于字符串数据类型,总是使用像'“+ rid +”'“这样的引号,因为rid是String,你会收到错误。
只有当rid为int时,才应使用 + rid 。
答案 1 :(得分:17)
你需要在Where子句检查中使用撇号('),比如
db.rawQuery("SELECT _id FROM Meeting where meet='"+rid+"'" , null);
答案 2 :(得分:5)
您也可以这样使用。
db.rawQuery("SELECT _id FROM Meeting where meet=?" ,
new String [] {rid});
这也将解决SQL注入问题。
答案 3 :(得分:4)
或者,更好的是,使用PreparedStatement并绑定变量。它会为你正确地逃避字符串和日期。它还有助于解决SQL注入问题。
还有人不知道这个吗?
答案 4 :(得分:0)
'<YOUR_ID_TO_MATCH_WITH>'
)如果以上答案还不清楚,只需使用单引号将 where 子句括起来即可。
例如:db.update(TABLE_USER,contentValues, "$KEY_TOKEN='${token}'",null)
注意 '$token'
中的引号。仅此而已! ?