Android SQLite:哪个查询("查询"或"rawQuery")更快?

Chi*_*rag 25 database android

我正在开发一个android数据库应用程序.我只是想知道哪些代码执行得更快,它们之间有什么区别?

查询 - 1 =

db.rawQuery("select * from user_table where user_id =" + userId, null);
Run Code Online (Sandbox Code Playgroud)

查询 - 2 =

db.query(USER_TABLE_NAME, ALL_COLUMNS, "user_id = " + userId, null, null, null, null);
Run Code Online (Sandbox Code Playgroud)

Dan*_*ato 16

使用查询.

Android预编译查询和使用太多不同的原始查询可能会导致性能问题.

仅在绝对需要时才使用rawQuery.

此外,您的示例都有SQL注入的MAJOR安全问题.

您应该清理userId.

最明显的事情是让Android通过使用:

db.query(USER_TABLE_NAME, ALL_COLUMNS, "user_id = ?", new String[] {userId}, null, null, null);
Run Code Online (Sandbox Code Playgroud)

  • RE预编译查询:仅在使用PreparedStatement时才适用.Query()只是构建字符串并将其传递给rawQuery(). (3认同)

dan*_*mit 6

查看android源代码中的SQLiteDatabase.java表明查询(..)最终调用QueryBuilder将查询构建为单个字符串,然后它实质上调用rawQuery().它们应该大致相同,假设您也做了相同的工作来构建自己的语句.