java - 带有 WHERE 子句的 Android SQLite rawQuery 返回搜索字符串作为未找到的列

标签 java android sqlite

我创建了一个名为 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/

相关文章:

java - 加快 Android 构建过程

java - JAVA 中带有 JSON 字符串的 HTTP POST 请求不起作用

android - ScrollView 回到顶部

java - 如何测量 Storm 中每个元组的端到端延迟?

android - react native 触摸 ID 不起作用

android - 结合免费和付费版本的 android

python - 使用 SQLite 的 NumPy 数组

c# - QueryAsyc 和使用 lambda 查询表有什么区别?

Android无法打开数据库文件错误

java - 泛型编译错误: type argument is not within bounds of type-variable S