Android、SQLlite将“值”误解为列(字段)
希望对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,"
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+"'";