Как пройти каждую запись в БД SQLite? - PullRequest
0 голосов
/ 08 июня 2010

Я думаю, что это довольно легко, но я все еще плохо знаком с программированием на Android, поэтому, пожалуйста, наберитесь терпения. Я хочу знать, как я могу получить количество записей (строк) в конкретной таблице в моей БД. Мне это нужно, чтобы я мог создать цикл, чтобы просмотреть каждую запись, добавить каждую из них в определенный массив и отобразить ее позже. Это источник:

db.openDataBase();            // open connection with db

Cursor c = db.getTitle(5);    // loop here through db, right now I'm fetching only one record

startManagingCursor(c);

//adding areas to the list here

Area o1 = new Area();

o1.setOrderName(c.getString(1) + c.getString(2));  

m_areas.add(o1);

db.close();

Кто-нибудь может мне помочь с этим, пожалуйста? Спасибо заранее!

Ответы [ 3 ]

2 голосов
/ 08 июня 2010
SELECT COUNT(*) FROM tablename
1 голос
/ 08 июня 2010

Чтобы получить количество строк в курсоре, используйте getCount .

Чтобы получить общее количество строк в таблице, используйте либо reinierpost s решение, либо выполните выбор, который выделит все строки в таблице и получит счетчик из курсора. Я предполагаю, что его решение быстрее, если только вам не нужны все строки в таблице.

Такой запрос будет:

SELECT * FROM footable;
0 голосов
/ 08 июня 2010

Вам не нужно сначала подсчитывать, сколько их; вместо этого создайте функцию db.getTitles(), которая возвращает все строки и возвращает курсор, а затем зацикливает курсор. Прямо сейчас у вас, вероятно, есть запрос, который выглядит примерно так: SELECT ColumnA, ColumnB FROM Titles WHERE id = 5; просто скопируйте функцию, удалите параметр и снимите предложение WHERE, чтобы оно выглядело как SELECT ColumnA, ColumnB FROM Titles.

Тогда ваш код будет выглядеть примерно так:

db.openDataBase(); // open connection with db
Cursor c = db.getTitles();
startManagingCursor(c);

//adding areas to the list here
if (c != null && c.moveToFirst()) {
    do {
        Area o1 = new Area();
        o1.setOrderName(c.getString(1) + c.getString(2));
        m_areas.add(o1);
    } while (c.next());
}

db.close();

Мы проверяем, вернула ли функция курсор вообще, затем переходим к началу курсора и начинаем цикл, переходя к следующему элементу каждый раз. Для получения дополнительной информации об интерфейсе Cursor см. API здесь , или чтобы узнать больше о доступе к базе данных и о связанных с этим методах проектирования в целом, я советую изучить Блокнот Notepad .

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