因此,您可能想在选择查询中使用两个参数:
您可以使用两种方法:
我将为您提供这两种情况的基本示例。
First:
String query = "select * from Table where someColumn = ? and someDateColumn = ?";
Cursor c = db.rawQuery(query, new String[] {textValue, dateValue});
解释:
所以我推荐你使用?
这就是所谓的占位符。
select 语句中的每个占位符将被替换(以相同的顺序,因此第一个占位符将被数组中的第一个值替换等)。来自selectionArgs 的值 - 它是上面声明的字符串数组。
Second:
rawQuery() 方法更容易理解,所以我从它开始。 Query() 方法更复杂并且有更多的参数。所以
-
columns:表示将选择的列数组。
-
选择:换句话说,就是 where 子句,所以如果您的选择是
KEY_COL + " = ?"
它的意思是"where " + KEY_COL + " = ?"
-
选择参数:每个占位符将被替换为此值
大批。
-
groupBy:它是多行(分组)功能。更多的
关于 http://www.tizag.com/sqlTutorial/sqlgroupby.php
-
having:该子句始终与 group by 子句一起使用这是
解释 http://www.techonthenet.com/sql/having.php
-
orderBy:is 子句用于根据一个或多个对行进行排序
列
另外方法有更多参数,但现在你不需要关心它们。如果你愿意,谷歌将成为你的朋友。
让我们回到解释和示例:
String[] columns = {KEY_COL1, KEY_COL2};
String whereClause = KEY_CATEGORY " = ? and " + KEY_DATE + " = ?";
String[] whereArgs = {"data1", "data2"};
Cursor c = db.query("Table", columns, whereClause, whereArgs, null, null, null);
因此,whereClause 包含两个参数,每个参数都带有占位符。因此,第一个占位符将替换为“data1”,第二个占位符将替换为“data2”。
执行查询时,查询将如下所示:
SELECT col1, col2 FROM Table WHERE category = 'data1' AND date = 'data2'
Note:我推荐你看看Android SQLite Database and ContentProvider - Tutorial http://www.vogella.com/articles/AndroidSQLite/article.html.
我还向您推荐使用占位符,它提供更安全、更易读和清晰的解决方案。