1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

datenbank problem cursor(?!)

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von Freddchen, 16.02.2012.

  1. Freddchen, 16.02.2012 #1
    Freddchen

    Freddchen Threadstarter Neuer Benutzer

    Beiträge:
    15
    Erhaltene Danke:
    0
    Registriert seit:
    09.02.2012
    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
     
  2. Schwede, 18.02.2012 #2
    Schwede

    Schwede Neuer Benutzer

    Beiträge:
    20
    Erhaltene Danke:
    0
    Registriert seit:
    26.04.2011
    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
     

Diese Seite empfehlen