繁体   English   中英

Android / SQLite-反引号,单引号或双引号?

[英]Android / SQLite - backticks, single quotes or double quotes?

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

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 COL_NAME = "select"; String TABLE_NAME = "from"; -这将中断查询。 因此,我显然需要在query字符串中用反引号,单引号或双引号将这些值引起来-但是其中哪种是Android / SQLite的最佳实践?

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

NB2-我在这里这里都看到过类似的问题,但这些问题/答案并未针对SQLite和Android。

我会说符合标准。

ANSI标准是用双引号引起来的字段/标识符,并且在SQLite上运行良好

请注意,某些其他RDBMS 可能需要一些帮助才能遵循该标准 ,但是遵循该标准将使您的SQL尽可能在尽可能多的RDBMS /平台上运行。

如果要使用SQLitedatabaseSQLitedatabase ,则可以只使用query方法,而不必担心您的选择字符串是否包含任何标识符。

尽管在使用带有MATCH标识符的FTS表时,我注意到您必须在可搜索字符串周围加上如下百分号: "%"+str+"%" ,否则它只能匹配到一个空格。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM