Android SQLite rawquery возвращает только первую запись - PullRequest
2 голосов
/ 07 декабря 2010

Мой запрос SQLite, возвращающий только одну запись. Однако таблица содержит несколько строк

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

Я даже пытался GROUP BY, но все равно не будет работать.

Я новичок в SQLiteБуду признателен за любую помощь.Спасибо.

Ответы [ 5 ]

7 голосов
/ 07 декабря 2010

Прежде всего ваш строковый запрос не должен быть завершен, поэтому вместо того, чтобы передавать его как:

"Select category from items;"

, вы должны попробовать передать его как:

"Select category from items"

, как указано в эта страница .

Кроме того, вы зацикливаетесь на курсоре?Вот пример того, как вывести данные из курсора с помощью цикла while:

ArrayList<String> results = new ArrayList<String>()
while (cursor.moveNext()) {
    results.add(cursor.getString(0)); // 0 is the first column 
}
4 голосов
/ 29 августа 2011

Сначала поиск:

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 голосов
/ 28 декабря 2011

Используйте это для выбора всех элементов из таблицы:

Курсор курсора = db.rawQuery ("SELECT * FROM Tablename, null);

1 голос
/ 05 августа 2013

это может вам помочь

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;
}
0 голосов
/ 15 июня 2012

вам не нужен необработанный метод запроса. я думаю, что способ Android лучше в этом случае:

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

чем использовать курсор, как уже написано в другом комментарии.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...