我正在构建一个选择查询的游标。 WHERE部分查找值是指一个变量,它是一个路径,因此它有几个句点。
查询不喜欢这个和错误,错误表示col不存在以名称命名,该名称是查找值,即带有停靠点的路径。如果我在变量上使用sqlEscape util,它不会导致错误,但查找失败。
有什么建议吗?
答案 0 :(得分:0)
没有你的代码,很难说,但我猜你是把你的where子句放在一起这样:
String value = "some.thing.or.other";
String where = "FIELD = " + value;
尝试构建参数化的where子句
String value = "some.thing.or.other";
String where = "FIELD = ?";
SQLiteDatabase db = fDbOpener.getReadableDatabase();
Cursor results = db.query(TABLE_NAME, COLUMNS_LIST, where, new String[] { value }, null, null, null);
当你现在运行查询方法时,SQLite会将你的值专门替换为where子句作为一个值 - 它不会尝试以任何方式解释该值,因此它不会错误地将句号错误地用于语法。 / p>