Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/225.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Android中形成SQL查询的最佳方式是什么?_Android_Database_Sqlite - Fatal编程技术网

在Android中形成SQL查询的最佳方式是什么?

在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);

我在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开发网站上的教程后,我开始形成上面的查询

问题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中连接字符串一样快或更快