Android / SQLite - 反引号,单引号还是双引号?

时间:2014-07-04 13:36:42

标签: android sqlite

假设我有这样的方法......

long getNumItemsFromDb() {
SQLiteDatabase db = dbhelper.getReadableDatabase();
try {
    String query = "SELECT " + COL_NAME +
                    " FROM " + TABLE_NAME +
                    " WHERE " + COL_NAME + " = ?";
    String[] args = new String[] {"whatever"};
    return DatabaseUtils.longForQuery(db, query, args);
} finally {
    db.close();
}

}

...但是,例如,String COL_NAME = "select";String TABLE_NAME = "from";可能会破坏查询。所以,我显然需要在我的query字符串中用反引号,单引号或双引号括起这些值 - 但这些是Android / SQLite的最佳做法?

注意 - 我已经简化了上面的查询字符串,使这个问题更简单,更重要。所以,实际上,我确实需要像这样手动创建SQL,而不是使用Android中的一种辅助方法。

NB2 - 我见过类似问题herehere,但问题/答案并未涉及SQLite和Android。

2 个答案:

答案 0 :(得分:3)

我说按照标准去做。

ANSI标准是引用字段/标识符的双引号,以及that works well on SQLite

请注意其他一些RDBMS的may need some help to follow the standard,但遵循它将允许您的SQL在尽可能多的RDBMS /平台上保持不变。

答案 1 :(得分:0)

如果您要使用机器人类SQLitedatabase,只需使用query方法,如果您的选择字符串包含任何标识符,请不要担心。

虽然在使用带有MATCH标识符的FTS表时,我注意到您必须使用百分号这样包围可搜索字符串:"%"+str+"%",否则它只匹配一个空格。