我在Android应用程序中有一个包含五个表的数据库。我一直在四处寻找在查询中放置条件的方法(WHERE,&&,OR)。
我的查询形式为:
public Cursor getAlternative(int questionid) {
Cursor cursor = mDb.query(DBTABLE_ALTERNATIVE, new String[] { KEY_ALT }, KEY_QID + "=" + questionid, null, null, null, null, null);
return cursor;
}
但我发现很多人用常规SQL编写查询,例如:
Cursor c = myDB.query("SELECT FirstName,Age" +
" FROM " + MY_DATABASE_TABLE
+ " WHERE Age > 10 LIMIT 7;",
null);
最有效的方法是什么?对我来说,似乎更容易形成常规SQL语句,但在阅读Android Dev网站上的教程后,我开始形成如上所述的查询。
问题2:如果我使用第一种方式,我该如何使用两种情况?假设我有两个参数,questionid
和categoryid
,如何将下一个KEY_CID +“=”+ categoryid放在那里?
我试过&&和AND似乎没有工作。谢谢。
答案 0 :(得分:1)
最有效的方式是什么?
这取决于......但一般而言,第二种方式会更快。为什么?因为它不需要使用查询方法所采用的参数来构建查询字符串。
但是,我宁愿使用第一种方式,因为它不易出错。
问题2.如果我使用第一种方式,我如何使用两种条件?
它应该以这种方式工作:
KEY_QID + "=" + questionid + " AND " +KEY_CATID + "=" + categoryid
答案 1 :(得分:1)
我不确定String和StringBuffers(StringBuilder会更好)的简单含义是否成立,因为SQL引擎还需要再次解析该查询字符串。 db.query()方式可能具有以下优点:查询的某些部分可以以预解析的方式存储(想想“PreparedStatement”)。特别是如果参数没有放在字符串中,而是作为占位符
E.g。 where KEY_QID=? AND KEY_CATID=?
这里基本查询“保持不变”,系统可以优化。