Android,SQLlite将"value"误解为列(字段)

car*_*arl -1 sqlite android

希望有人在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);
Run Code Online (Sandbox Code Playgroud)

然后检查该表是否有重复项,因此:

String Query = "Select * from " + table + " where " + column + "=" + value;
Cursor cursor = db.rawQuery(Query, null);
Run Code Online (Sandbox Code Playgroud)

这会导致异常:

引起:android.database.sqlite.SQLiteException:没有这样的列:白俄罗斯(代码1):,同时编译:从名称=白俄罗斯的国家选择*

是什么导致SQLlite将列名中的值白俄罗斯语解释为列?

在几乎相同的"流派"表中,COLUMN_ID用作主键,此代码完美运行.这就是为什么我用假人替换了COLUMN_ID,以防它与_ID列发生冲突,而_ID列应该是自动创建的.

laa*_*lto 5

SQL中的字符串文字'single quotes'不会被解释为列名等标识符.

但是,使用?变量并绑定值更好:

String Query = "Select * from " + table + " where " + column + "=?";
Cursor cursor = db.rawQuery(Query, new String[] { value });
Run Code Online (Sandbox Code Playgroud)