gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 07:46:02 25 4
gpt4 key购买 nike

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com