webentwicklung-frage-antwort-db.com.de

Holen Sie sich alle Zeilen von SQLite

Ich habe versucht, alle Zeilen aus der SQLite-Datenbank zu erhalten. Ich habe aber nur die letzte Reihe von den folgenden Codes erhalten. 

FileChooser-Klasse:

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-Klasse:

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;
}

Bitte sag mir, wo ist mein Fehler? Schätzen.

37
Yoo

versuchen:

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

UND für List<String>:

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

    list.add(name);
    cursor.moveToNext();
  }
}
72

Dies ist fast die gleiche Lösung wie die anderen, aber ich dachte, es wäre gut, verschiedene Wege zu sehen, um dasselbe Ergebnis zu erzielen und ein wenig zu erklären:

Wahrscheinlich haben Sie die Tabellenname String-Variable zu dem Zeitpunkt initialisiert, zu dem Sie den DBHandler aufgerufen haben.

private static final String MYDATABASE_TABLE = "anyTableName";

Dann, wo immer Sie versuchen, alle Tabellenzeilen abzurufen;

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)));
   }
}
cursor.close();
db.close();

Ehrlich gesagt gibt es viele Möglichkeiten, dies zu tun,

3
ArtiomLK

Verwendung der integrierten Methode von Android

Wenn Sie jede Spalte und jede Zeile haben möchten, übergeben Sie einfach null für die Parameter SQLiteDatabasecolumn und selection.

Cursor cursor = db.query(TABLE_NAME, null, null, null, null, null, null, null);

Mehr Details

Die anderen Antworten verwenden rawQuery, Sie können jedoch die eingebauten SQLiteDatabase von Android verwenden. Die documentation for query besagt, dass Sie einfach null an den Parameter selection übergeben können, um alle Zeilen abzurufen.

selection Wenn Sie null übergeben, werden alle Zeilen für die angegebene Tabelle zurückgegeben.

Und während Sie auch null für den Parameter column übergeben können, um alle Spalten zu erhalten (wie im obigen Einzeiler), ist es besser, nur die benötigten Spalten zurückzugeben. Die Dokumentation sagt

columns Bei der Übergabe von null werden alle Spalten zurückgegeben. Es wird davon abgeraten, Daten aus dem Speicher zu lesen, die nicht verwendet werden.

Beispiel

SQLiteDatabase db = mHelper.getReadableDatabase();
String[] columns = {
        MyDatabaseHelper.COLUMN_1,
        MyDatabaseHelper.COLUMN_2,
        MyDatabaseHelper.COLUMN_3};
String selection = null; // this will select all rows
Cursor cursor = db.query(MyDatabaseHelper.MY_TABLE, columns, selection,
        null, null, null, null, null);
3
Suragch

Ich habe das gleiche Problem untersucht! Ich denke, Ihr Problem hängt damit zusammen, wo Sie die Variable identifizieren, mit der Sie die zurückgegebene ArrayList auffüllen. Wenn Sie es innerhalb der Schleife definieren, referenziert es immer die letzte Zeile in der Tabelle in der Datenbank. Um dies zu vermeiden, müssen Sie es außerhalb der Schleife identifizieren:

String name;
if (cursor.moveToFirst()) {

        while (cursor.isAfterLast() == false) {
            name = cursor.getString(cursor
                    .getColumnIndex(countyname));

            list.add(name);
            cursor.moveToNext();
        }
}
2
Sam Khalil

queueAll()-Methode wie folgt aktualisieren:

public Cursor queueAll() {

     String selectQuery = "SELECT * FROM " + MYDATABASE_TABLE;
     Cursor cursor = sqLiteDatabase.rawQuery(selectQuery, null);

     return cursor;
}

readFileFromSQLite()-Methode wie folgt aktualisieren:

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;
}
0
Ferdous Ahamed
public List<String> getAllData(String email)
{

    db = this.getReadableDatabase();
    String[] projection={email};

    List<String> list=new ArrayList<>();

    Cursor cursor = db.query(TABLE_USER, //Table to query
            null,    //columns to return
            "user_email=?",        //columns for the WHERE clause
            projection,        //The values for the WHERE clause
            null,       //group the rows
            null,       //filter by row groups
            null);
    //  cursor.moveToFirst();

    if (cursor.moveToFirst()) {
        do {

            list.add(cursor.getString(cursor.getColumnIndex("user_id")));
            list.add(cursor.getString(cursor.getColumnIndex("user_name")));
            list.add(cursor.getString(cursor.getColumnIndex("user_email")));
            list.add(cursor.getString(cursor.getColumnIndex("user_password")));
            // cursor.moveToNext();

        } while (cursor.moveToNext());
    }
    return list;
}
0
abc
Cursor cursor = myDb.viewData();

        if (cursor.moveToFirst()){
              do {
                 String itemname=cursor.getString(cursor.getColumnIndex(myDb.col_2));
                 String price=cursor.getString(cursor.getColumnIndex(myDb.col_3));
                 String quantity=cursor.getString(cursor.getColumnIndex(myDb.col_4));
                 String table_no=cursor.getString(cursor.getColumnIndex(myDb.col_5));

                 }while (cursor.moveToNext());

                }

                cursor.requery();
0
roshan posakya