如何使用SQLiteDatabase.query进行查询?
"Select * from table where col1 = something AND col2 IS NOT NULL"
我尝试将col2放在=?选择String中的选择String和NOT NULL但它不起作用。
请告诉我哪里出错了。
答案 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)
您可以使用Cursor
和rawQuery
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);