我遵循了建议in this question,但出于我的目的,我不想要WHERE
。
我不知道价值,所以我不能说rawQuery("... WHERE x = ?", y)
,我不关心y
是什么,它只是我想要的一个细胞,并且众所周知,只有一行。
如果不可能失去条件(可能是因为导致不确定数量的结果?) - 那么我怎么能从第z列和第0行和第34行说出"?
我缺乏术语或完全理解,因为我的搜索没有任何结果。
编辑: Eclipse没有抱怨:
result = db.rawQuery("SELECT col FROM tbl", my_unused_string_array);
我还没有进入测试阶段,我无法将其输入到我用于测试SELECT col FROM tbl
和〜WHERE
的SQL数据库读取器中。它有用吗?
答案 0 :(得分:1)
根据您的编辑,如果您想从表中获取所有记录,则无需指定WHERE
子句:
result = db.rawQuery("SELECT col FROM tbl", new String[0]);
答案 1 :(得分:0)
SQL查询“SELECT * FROM table”将返回整个表。 “SELECT colX,colY FROM table”将返回表格中所有行的列colX和colY。如果您的表只包含一行,“SELECT col FROM table”将返回该行的col值。
要使用SQLiteDatabase API进行查询,您可以说:
result = db.rawQuery("SELECT col FROM tbl", null);
...因为您没有提供任何查询参数。
假设只有一行对我来说似乎很危险。我会不使用“LIMIT”子句,因为虽然它总是会得到一行,但如果发生这种情况,它会隐藏有多行的事实。相反,我建议您声明游标包含一行,如下所示:
if (1 != result.getCount()) {
throw Exception("something's busted");
}
答案 2 :(得分:0)
而不是使用Raw查询
Cursor cur = db.query(Table_name, null, null, null, null,
null, null);
并从光标中获取所需的属性。
其中查询方法具有以下方式的参数:
public Cursor query (String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy)
<强>参数:强>
table 用于编译查询的表名。
列要返回的列的列表。传递null将返回所有列,不鼓励这些列阻止从不会使用的存储中读取数据。
选择一个过滤器,声明要返回哪些行,格式化为SQL WHERE子句(不包括WHERE本身)。传递null将返回给定表的所有行。
selectionArgs 您可以在选择中包含?,它将被selectionArgs中的值替换,以便它们出现在选择中。这些值将绑定为字符串。
groupBy 过滤器,声明如何对行进行分组,格式化为SQL GROUP BY子句(不包括GROUP BY本身)。传递null将导致行不被分组。
有过滤器声明要在游标中包含哪些行组,如果正在使用行分组,则格式化为SQL HAVING子句(不包括HAVING本身)。 传递null将导致包含所有行组,并且在未使用行分组时是必需的。
orderBy 如何对行进行排序,格式化为SQL ORDER BY子句(不包括ORDER BY本身)。传递null将使用默认排序顺序,该顺序可能是无序的。
<强>返回强> Cursor 对象,位于第一个条目之前。