Intereting Posts
Как использовать InputType = numberDecimal с помощью «телефонной» мягкой клавиатуры? Невидимая / прозрачная кнопка, которая работает как обычный в андроиде? Тип R уже определена ошибка Как переместить MediaController? Создание гибридных приложений React для iOS и Android с собственной производительностью Android – Уменьшить размер файла изображения Могу ли я писать собственный iPhone, Android, Windows, BlackBerry приложения, используя Python? Студия Android, использующая> 100% процессор во все времена – фоновые процессы не работают Начальная позиция PagerAdapter «Apple-mobile-web-app-title» на Android Что нужно использовать в качестве полезной нагрузки разработчика в API-интерфейсах Google In-App Billing? Samsung Galaxy S4 сопоставляет значок Actionbar Ошибка настройки Phonegap Ошибка Кордовы Ошибка создания Играть в YouTube в WebView «Требуется миграция области», исключение в андроиде при извлечении значений из realm db

Получить все строки из SQLite

Я пытаюсь получить все строки из базы данных SQLite. Но я получил только последнюю строку из следующих кодов.

Класс FileChooser:

public ArrayList<String> readFileFromSQLite() { fileName = new ArrayList<String>(); fileSQLiteAdapter = new FileSQLiteAdapter(FileChooser.this); fileSQLiteAdapter.openToRead(); cursor = fileSQLiteAdapter.queueAll(); if (cursor != null) { if (cursor.moveToFirst()) { do { fileName.add(cursor.getString(cursor.getColumnIndex(FileSQLiteAdapter.KEY_CONTENT1))); } while (cursor.moveToNext()); } cursor.close(); } fileSQLiteAdapter.close(); return fileName; } 

Класс FileSQLiteAdapter:

 public Cursor queueAll() { String[] columns = new String[] { KEY_ID, KEY_CONTENT1 }; Cursor cursor = sqLiteDatabase.query(MYDATABASE_TABLE, columns, null, null, null, null, null); return cursor; } 

Пожалуйста, скажите мне, где моя ошибка. Цените.

Solutions Collecting From Web of "Получить все строки из SQLite"

пытаться:

 Cursor cursor = db.rawQuery("select * from table",null); 

И для List<String> :

 if (cursor.moveToFirst()) { while (!cursor.isAfterLast()) { String name = cursor.getString(cursor.getColumnIndex(countyname)); list.add(name); cursor.moveToNext(); } } 

Я искал ту же проблему! Я думаю, ваша проблема связана с тем, где вы идентифицируете переменную, которую используете для заполнения возвращаемого вами массива ArrayList. Если вы определите его внутри цикла, он всегда будет ссылаться на последнюю строку в таблице в базе данных. Чтобы этого избежать, вы должны определить его вне цикла:

 String name; if (cursor.moveToFirst()) { while (cursor.isAfterLast() == false) { name = cursor.getString(cursor .getColumnIndex(countyname)); list.add(name); cursor.moveToNext(); } } 

Это почти то же самое решение, что и другие, но я подумал, что было бы неплохо посмотреть на разные способы достижения одного и того же результата и немного объяснить:

Вероятно, у вас есть имя таблицы String, инициализированное в то время, когда вы вызвали DBHandler, так что это будет что-то вроде;

 private static final String MYDATABASE_TABLE = "anyTableName"; 

Затем, где бы вы ни пытались извлечь все строки таблицы;

 SQLiteDatabase db = this.getReadableDatabase(); Cursor cursor = db.rawQuery("select * from " + MYDATABASE_TABLE, null); List<String> fileName = new ArrayList<>(); if (cursor.moveToFirst()){ fileName.add(cursor.getString(cursor.getColumnIndex(COLUMN_NAME))); while(cursor.moveToNext()){ fileName.add(cursor.getString(cursor.getColumnIndex(COLUMN_NAME))); } } в SQLiteDatabase db = this.getReadableDatabase(); Cursor cursor = db.rawQuery("select * from " + MYDATABASE_TABLE, null); List<String> fileName = new ArrayList<>(); if (cursor.moveToFirst()){ fileName.add(cursor.getString(cursor.getColumnIndex(COLUMN_NAME))); while(cursor.moveToNext()){ fileName.add(cursor.getString(cursor.getColumnIndex(COLUMN_NAME))); } } 

Честно говоря, есть много способов сделать это,

Обновить queueAll() как queueAll() ниже:

 public Cursor queueAll() { String selectQuery = "SELECT * FROM " + MYDATABASE_TABLE; Cursor cursor = sqLiteDatabase.rawQuery(selectQuery, null); return cursor; } 

Обновите readFileFromSQLite() как readFileFromSQLite() ниже:

 public ArrayList<String> readFileFromSQLite() { fileName = new ArrayList<String>(); fileSQLiteAdapter = new FileSQLiteAdapter(FileChooser.this); fileSQLiteAdapter.openToRead(); cursor = fileSQLiteAdapter.queueAll(); if (cursor != null) { if (cursor.moveToFirst()) { do { String name = cursor.getString(cursor.getColumnIndex(FileSQLiteAdapter.KEY_CONTENT1)); fileName.add(name); } while (cursor.moveToNext()); } cursor.close(); } fileSQLiteAdapter.close(); return fileName; }