希望有人在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):,同时编译:从名称=白俄罗斯的国家/地区选择*
是什么导致SQLlite将列名中的值白俄罗斯语解释为列?
在几乎相同的"流派"表格中,COLUMN_ID用作主键,此代码完美无缺。这就是为什么我用假人替换COLUMN_ID,以防它与_ID列发生冲突,而_ID列应该是自动创建的。
答案 0 :(得分:5)
SQL中的字符串文字进入'single quotes'
,不会被解释为列名等标识符。
但是,使用?
变量并绑定值更好:
String Query = "Select * from " + table + " where " + column + "=?";
Cursor cursor = db.rawQuery(Query, new String[] { value });
答案 1 :(得分:1)
更改您的代码行
"Select * from " + table + " where " + column + "=" + value;
到
"Select * from " + table + " where " + column + "= '" + value+"'";
值应该是单引号。