在Android中形成SQL查询的最佳方式是什么?
我在Android应用程序中有一个包含五个表的数据库。我一直在寻找一种在WHERE,&&,OR查询中放置条件的方法 我的查询如下:在Android中形成SQL查询的最佳方式是什么?,android,database,sqlite,Android,Database,Sqlite,我在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);
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开发网站上的教程后,我开始形成上面的查询
问题2:如果我使用第一种方法,如何使用两个条件?假设我有两个参数,questionid和categoryid,我如何将下一个键_CID+=+categoryid放在那里
我试过&&和,但似乎都不管用。谢谢
最有效的方法是什么
这取决于。。。但一般来说,第二种方法会更快。为什么?因为它不需要使用查询方法所采用的参数来构建查询字符串
然而,我宁愿使用第一种方法,因为它不太容易出错
问题2。如果我使用第一种方法,如何使用两个条件
它应该这样工作:
KEY_QID + "=" + questionid + " AND " +KEY_CATID + "=" + categoryid
我不确定关于字符串和StringBuffers StringBuilder的简单含义是否更好,因为SQL引擎还需要再次解析该查询字符串。 db.query方式的优点是查询的某些部分可以以预解析的方式存储,比如PreparedStatement。特别是如果参数不是放在字符串中,而是作为占位符 例如,其中KEY_QID=?和KEY_CATID=
在这里,基本查询保持不变,系统可以进行优化。阅读Java StringBuffer类。将一组StringBuffer.append调用串在一起比直接串接要好。例如,StringBuffer=新的StringBuffer;buffer.appendname,选择firstname,age;buffer.append from;buffer.appendmy_数据库_表;。。。放球很好,现在看来很明显。我宁愿使用不太容易出错的方式,因为我的代码应该被重用。然而,有趣的是,对于什么样的方式最适合形成查询,有很多意见。谢谢你的时间!我想指出,一些查询构建是在本机代码中完成的,潜在的字符串绑定也是如此。因此,第一种方法可能与java中连接字符串一样快或更快