datenbank problem cursor(?!)

Freddchen

Freddchen

Neues Mitglied
0
hallo zusammen,

ich bräuchte mal ein kleines tutorial damit ich die datenbank vernünftig abfragen kann.

also ich habe eine datenbankklasse die sich nur um die behandlung von datenbanktypischen dingen beschäft (wie logisch aber auch). wie zum beispiel select oder insert oder update. beim select teil also readdatafromdatabase() habe ich so aufgebaut:

db = openHelper.getReadableDatabase();
Cursor cursor = db.rawQuery("SELECT * FROM courses", null);if(cursor.moveToFirst())

do{
dann der ganze kram damit ich ein array befüllen kann

.....

} while (cursor.moveToNext());

cursor.close();
db.close();

ich bekomme fehler wie beispielsweise:

android attempt to re-open an already-closed object
android java.lang.IllegalStateException: database (conn# 0) already closed
android.database.sqlite.DatabaseObjectNotClosedException: Application did not close the cursor or database object that was opened here
java.lang.IllegalStateException: Don't have database lock!
at android.database.sqlite.SQLiteDatabase.verifyLockOwner(SQLiteDatabase.java:2131)

ich vermute das ich irgendwas vergesse zu machen. also wie lock(e) ich eine datenbank? ich benutze keinen adapter!

danke gruß,

freddchen
 
Hallo Freddchen,

versuche es mal so (siehe unten). Offensichtlich definierst du weiter vorn in deinem Programm openHelper so:

DatabaseHelper openHelper = new DatabaseHelper(mContext);

diesen openHelper musst du schließen!

Deine do-Schleife habe ich mal geändert in eine while Schleife.

db = openHelper.getReadableDatabase();
Cursor cursor = db.rawQuery("SELECT * FROM courses", null);

while (!cursor.isAfterLast()) {
...hier dann Array füllen
c.moveToNext();
}
cursor.close();
openHelper.close();

Viele Grüße
Schwede
 

Ähnliche Themen

S
Antworten
33
Aufrufe
2.655
Sempervivum
S
W
  • WuDiDong
Antworten
3
Aufrufe
765
jogimuc
J
Zurück
Oben Unten