Android、SQLlite将“值”误解为列(字段)

Android、SQLlite将“值”误解为列(字段),android,sqlite,Android,Sqlite,希望对Android上使用SQLlite有更多了解的人能够为本次测验提供有用的评论,提前感谢: 创建一个简单的表 String CREATE_DIRBLE_COUNTRIES_TABLE = "CREATE TABLE " + DIRBLE_COUNTRIES_TABLE + "(" + COLUMN_DUMMY + " TEXT," + COLUMN_NAME + " TEXT PRIMARY KEY," + COLUMN_TITLE + " TEXT,"

希望对Android上使用SQLlite有更多了解的人能够为本次测验提供有用的评论,提前感谢:

创建一个简单的表

String CREATE_DIRBLE_COUNTRIES_TABLE = "CREATE TABLE " + DIRBLE_COUNTRIES_TABLE
    + "("
    + COLUMN_DUMMY + " TEXT,"
    + COLUMN_NAME + " TEXT PRIMARY KEY,"
    + COLUMN_TITLE + " TEXT,"
    + COLUMN_DESCRIPTION + " TEXT,"
    + COLUMN_SLUG + " TEXT,"
    + COLUMN_ANCESTRY + " TEXT,"
    + COLUMN_COUNTRYCODE + " TEXT,"
    + COLUMN_REGION + " TEXT,"
    + COLUMN_SUBREGION + " TEXT"
    + ")";

db.execSQL (CREATE_DIRBLE_COUNTRIES_TABLE);
然后检查该表是否存在重复项,因此:

String Query = "Select * from " + table + " where " + column + "=" + value;
Cursor cursor = db.rawQuery(Query, null);
这将导致一个例外:

原因:android.database.sqlite.SQLiteException:无此列:白俄罗斯代码1:,编译时:选择*来自name=白俄罗斯的国家

是什么导致SQLlite将列名中的值解释为列


在一个几乎相同的类型表中,使用列_ID作为主键,这段代码可以完美地工作。这就是为什么我将列ID替换为伪ID,以防它与假定自动创建的列ID冲突。

SQL中的字符串文字放在“单引号”中,不能解释为列名等标识符

但是,使用它更好吗?变量和绑定值:

String Query = "Select * from " + table + " where " + column + "=?";
Cursor cursor = db.rawQuery(Query, new String[] { value });
更改代码行

"Select * from " + table + " where " + column + "=" + value;


值应为单引号。

有效。请您添加一个简短的解释,为什么绑定值更好?@carl例如,您不必转义values.Working中的“字符”。谢谢我的建议,虽然可能看起来很粗鲁,但它是说您需要学习SQL的基础知识,而不是特定于SQLite的。
"Select * from " + table + " where " + column + "= '" + value+"'";