SQLite中的SELECT条目,没有WHERE条件?

时间:2014-02-26 03:35:04

标签: android sql sqlite

我遵循了建议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数据库读取器中。它有用吗?

3 个答案:

答案 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 对象,位于第一个条目之前。