Ich brauche eine Anzahl der Tabellen, die sich momentan in meiner SQLite-Datenbank befinden. Versuchte Suche, bekam aber keine direkte Methode.
Ich habe diese Methode in meinem DbHelper ausprobiert.
%Vor%Aber diese Methode gibt mir eine falsche Anzahl. Ich habe nur 3 Tabellen in meiner DB, aber diese Methode gibt als 5 zurück. Was könnte mit dieser Methode falsch sein. Gibt es eine direkte Methode, um die Anzahl zu erhalten.
Ihre Methode ist in Ordnung, Sie könnten sogar SELECT count(*) ...
verwenden. Aber es gibt zwei Tabellen, die automatisch erstellt werden android_metadata
und sqlite_sequence
, berücksichtigt diese einfach: 5 - 2 = 3 Tabellen, die Sie erstellt haben.
Oder seit Squonk eine hervorragende Dokumentation darüber geliefert hat, wann sqlite_sequence
erstellt wurde und wann nicht < em> existieren, empfehle ich diese Abfrage:
Ein paar Hinweise, um Ihren Code zu verkürzen
All dies:
%Vor%Kann so erreicht werden:
%Vor% Cursor.moveToNext () gibt true zurück, wenn die nächste Zeile existiert. Wenn ein neuer Cursor nicht leer ist, gibt moveToNext () true zurück und setzt diesen Index auf die erste Position. Wenn cursor.isAfterLast() == true
, gibt moveToNext () false zurück.
Aber wenn Sie einfach zählen möchten, wie viele Zeilen im Cursor sind, verwenden Sie:
%Vor%Speichern Sie zuletzt Ihre schreibbare Datenbank in einer Variablen.
%Vor%Ich habe das nicht getestet, aber wenn getReadableDatabase () jedes Mal ein neues SQLiteDatabase-Objekt zurückgibt, dann schließen Sie einfach diese neue Datenbank, sobald Sie sie erstellt haben ... Ich würde die Datenbank einmal schließen und ich würde es schließen nachdem Ich habe alle Cursor, die ich daraus abgerufen habe, geschlossen.
%Vor%Wenn Sie viele Abfragen verwenden, sollten Sie Ihre Datenbank in onResume () öffnen und in onPause () schließen.
Versuchen Sie
%Vor%Geben Sie einfach Ihren Datenbanknamen wie gezeigt ein.