我创建了一个名为 CHEMISTID 的表:
private static final String CREATE_TABLE_CHEMISTID = "CREATE TABLE "
+ CHEMISTID + "(" + KEY_ID + " INTEGER PRIMARY KEY, " + KEY_CHEMISTID
+ " TEXT" + ")";
我的插入功能正常工作,但是当我使用以下查询语句运行搜索查询以查找 chemistId 是否已存在时:
String selectQuery = "SELECT * FROM " + CHEMISTID +" WHERE " + KEY_CHEMISTID + " = "+ chemistID + ";";
Cursor c = db.rawQuery(selectQuery,null);
我的 logcat 显示以下错误消息:
E/AndroidRuntime(1169): FATAL EXCEPTION: main
E/AndroidRuntime(1169): android.database.sqlite.SQLiteException: no such column: Spain (code 1): , while compiling: SELECT * FROM chemistIdTable WHERE chemistId = Spain;
西类牙是我在程序中动态创建的特定 chemistId。
我应该如何修复我的 selectQuery 字符串,以便它在列名称 KEY_CHEMISTID 中搜索特定字符串 chemistId?
最佳答案
您需要在 SQL 中引用您的字符串,例如 Spain
,以便它们被视为字符串文字而不是列名称标识符。您可以为此使用单引号,例如 'Spain'
。
然而,使用 ?
参数占位符并在选择参数数组中提供参数值要好得多,例如:
... KEY_CHEMISTID + "=?" ...
c = db.rawQuery(selectQuery, new String[] { chemistID });
关于java - 带有 WHERE 子句的 Android SQLite rawQuery 返回搜索字符串作为未找到的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25684111/