如何使用SQLiteDatabase.query进行查询

时间:2013-11-06 09:58:52

标签: android sqlite

如何使用SQLiteDatabase.query进行查询?

"Select * from table where col1 = something AND col2 IS NOT NULL"

我尝试将col2放在=?选择String中的选择String和NOT NULL但它不起作用。

请告诉我哪里出错了。

3 个答案:

答案 0 :(得分:3)

selectionArgs是一个字符串数组,只能用于字符串值。

当您使用col2 = ?字符串NOT NULL时,您告诉数据库检查列的值是否为八个字符的字符串"NOT NULL"

您必须将col2 IS NOT NULL直接写入selection字符串:

db.query("MyTable", null,
         "col1 = ? AND col2 IS NOT NULL",
         new String[] { "something" },
         null, null, null);

答案 1 :(得分:0)

您可以使用CursorrawQuery

Cursor c=db.rawQuery(your_query,null) 

答案 2 :(得分:0)

public Cursor query (String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy) 

查询给定的表,在结果集上返回一个Cursor。

参数 table用于编译查询的表名。

columns

要返回的列的列表。传递null将返回所有列,不鼓励这些列阻止从不会使用的存储中读取数据。

selection 

过滤器,声明要返回哪些行,格式化为SQL WHERE子句(不包括WHERE本身)。传递null将返回给定表的所有行。

selectionArgs

您可以在选择中包含?,它将被来自selectionArgs的值替换,以便它们出现在选择中。这些值将绑定为字符串。

groupBy

一个过滤器,声明如何对行进行分组,格式化为SQL GROUP BY子句(不包括GROUP BY本身)。传递null将导致行不被分组。

having

过滤器声明要在游标中包含哪些行组,如果正在使用行分组,则将其格式化为SQL HAVING子句(不包括HAVING本身)。传递null将导致包含所有行组,并且在未使用行分组时是必需的。

orderBy

如何对行进行排序,格式化为SQL ORDER BY子句(不包括ORDER BY本身)。传递null将使用默认排序顺序,该顺序可能是无序的。

所以你可以试试这个

String[] args = { "first string", "second@string.com" };
Cursor cursor = db.query("TABLE_NAME", null, "name=? AND email=?", args, null,null,null);