2016-12-12 5 views
1

Ich habe eine SQLite-Datenbank erstellt. Es zeigt nicht alle Datensätze an: es gibt nur einen Datensatz.
Ich habe mehr als einen Datensatz eingefügt, aber die Datenbank sät nur einen Datensatz.SQLite-Datenbank zeigt nicht alle Datensätze

Die Methode show record zeigt nur den zuletzt eingefügten Datensatz an.
Ich möchte alle in der Datenbank gespeicherten Datensätze anzeigen.

Die Datensätze wurden erfolgreich hinzugefügt.

import android.content.Context; 

import android.database.Cursor; 
import android.database.sqlite.SQLiteDatabase; 

import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 

import android.widget.TextView; 




public class ViewPeople extends AppCompatActivity { 
    private TextView textViewName; 

    private static final String SELECT_SQL = "SELECT * FROM persons"; 

    private SQLiteDatabase db; 

    private Cursor c; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_view_people); 
     openDatabase(); 

     textViewName = (TextView) findViewById(R.id.textViewName); 




     c = db.rawQuery(SELECT_SQL, null); 
     c.moveToFirst(); 
     showRecords(); 
    } 

    protected void openDatabase() { 
     db = openOrCreateDatabase("PersonDB", Context.MODE_PRIVATE, null); 
    } 

    protected void showRecords() { 

     String name = c.getString(1); 
     textViewName.setText(name); 



    } 
+0

Du Looping nicht Recordset durch –

+0

Sie nur eine Textview haben. Auch wenn Sie alle Datensätze durchlaufen, haben Sie einen Mechanismus, damit sie angezeigt werden. Sie können sie alle in einer einzelnen Textansicht mit einem Trennzeichen anzeigen. Oder habe einen RecyclerView –

Antwort

2

Sie müssen Daten in einer Schleife abrufen.

if (c.moveToFirst()){ 
    do{ 
     String name = c.getString(1); 
     // do what ever you want here 
    }while(c.moveToNext()); 
} 
c.close(); 
+0

funktioniert nicht Ich habe diesen Code auf alle möglichen Plätze –

+0

wo hast du diesen Code? –

+0

c = db.rawQuery (SELECT_SQL, null); c.moveToFirst(); showRecords(); –

-1

Es ist nicht der Fehler, aber die Sqlite gibt standardmäßig nur einen Datensatz zurück. Wenn Sie alle Datensätze benötigen, müssen Sie die Schleife verwenden.

versuchen, folgendes zu tun, entfernen c.moveToFirst(); showRecords(); und fügen Sie den folgenden Code hinzu.

while(c.moveToNext()){ 
    showRecords(); 
} 

und in showRecords Verfahren entfernen textViewName.setText (name); und fügen Sie TextViewName.append hinzu (Name + "\ n");

+0

'Standardmäßig die Sqlite gibt nur einen Datensatz zurück '. .. ** WAS ?! WANN?! WIE?! ** - Du machst Witze. –

+0

Wenn Sie versuchen, den Datensatz zu holen, meine ich, wenn Sie get Methode ohne Schleife verwenden. –

+0

Der Cursor gibt ** ALLE Zeilen ** zurück, die Sie in der Abfrage ausgewählt haben. Es liegt dann an Ihnen, sie nacheinander zu holen. –

0

Verwenden Sie diese Bibliothek, um die Datenbank zur Laufzeit anzuzeigen.

com.amitshekhar.android:debug-db:0.4.0

und alle Datensätze anzuzeigen, müssen Sie diesen Code verwenden.

if (cursor.moveToFirst()) { do { tvName.setText(cursor.getString(0)); } while (cursor.moveToNext());

Verwandte Themen