Android SQLite rawquery仅返回第一条记录

时间:2010-12-07 03:59:32

标签: android sqlite

我的SQLite查询只返回一条记录,但是,该表有多行

cursor=mydb.rawQuery("Select category from items;", null);

我甚至试过GROUP BY但仍然无法工作。

我是SQLite的新手,非常感谢任何帮助。感谢。

5 个答案:

答案 0 :(得分:7)

首先,不得终止您的字符串查询,而不是将其作为:

传递
"Select category from items;"

你应该尝试将其传递为:

"Select category from items"

this page所述。

另外,你是否在光标上循环?以下是如何使用while循环从游标中获取数据的示例:

ArrayList<String> results = new ArrayList<String>()
while (cursor.moveNext()) {
    results.add(cursor.getString(0)); // 0 is the first column 
}

答案 1 :(得分:4)

首先,搜索:

Cursor cs = myDataBase.rawQuery("Your query", null);
if (cs.moveToFirst()) {
    String a = cs.getString(cs.getColumnIndex("your_column_name"));
    cs.close();
    return a;
}
cs.close();
return "";

从光标获取信息:

if (cs.moveToFirst()) {
    ArrayList<String> results = new ArrayList<String>()
    do {
            results.add(cs.getString(cs.getColumnIndex("your_column_name"))); 
    } while (cs.moveNext());
}

没有if,我在我的项目中犯了错误。但这对我有用。顺便说一下,你的查询看起来不太好。如果您提供有关数据库的一些信息,我们可以提供更多帮助。

答案 2 :(得分:2)

使用此选项从表格中选择所有项目:

Cursor cursor = db.rawQuery(&#34; SELECT * FROM Tablename,                 空);

答案 3 :(得分:1)

这可以帮到你

public ArrayList<mydata> getallContents() {

    ArrayList<mydata> lst = new ArrayList<mydata>();

    SQLiteDatabase db = this.getReadableDatabase();

    Cursor c = db.rawQuery("select * from " + GAMETABLE, null);

    if (c.moveToFirst()) {
        do {
            lst.add(new mydata(c.getString(1),
                    c.getString(3),c.getString(4),c.getString(5),c.getString(6)));

        } while (c.moveToNext());
    }
    db.close();
    return lst;
}

答案 4 :(得分:0)

您不需要原始查询方法。我认为在这种情况下android方式更好:

    db.query(items, category, null, null, null, null, null);

比使用光标已经在另一条评论中写入的内容。