Android NullPointerException + GetDatabaseLocked

Ich habe ein problem mit meinem programm.
Ich benutze eine Datenbank zum speichern der Einstellungen meiner app. Wenn ich das Passwort speichern in der app seine ganz ok, aber wenn ich speichern den Namen einer "schulklasse" mit im Prinzip der gleichen Methode, aber ein anderer Tisch stürzt es ab und ich bekam diese Fehlermeldung:

02-19 15:32:04.070: E/AndroidRuntime(14349): FATAL EXCEPTION: main
02-19 15:32:04.070: E/AndroidRuntime(14349): java.lang.NullPointerException
02-19 15:32:04.070: E/AndroidRuntime(14349):    at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:224)
02-19 15:32:04.070: E/AndroidRuntime(14349):    at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:164)
02-19 15:32:04.070: E/AndroidRuntime(14349):    at de.vertretungsplan2.helper.DBHandler.insertKurs(DBHandler.java:95)
02-19 15:32:04.070: E/AndroidRuntime(14349):    at de.vertretungsplan2.tabswipe.adapter.KurseFragment$1.onItemClick(KurseFragment.java:38)
02-19 15:32:04.070: E/AndroidRuntime(14349):    at android.widget.AdapterView.performItemClick(AdapterView.java:297)
02-19 15:32:04.070: E/AndroidRuntime(14349):    at android.widget.AbsListView.performItemClick(AbsListView.java:1100)
02-19 15:32:04.070: E/AndroidRuntime(14349):    at android.widget.AbsListView$PerformClick.run(AbsListView.java:2788)
02-19 15:32:04.070: E/AndroidRuntime(14349):    at android.widget.AbsListView$1.run(AbsListView.java:3463)
02-19 15:32:04.070: E/AndroidRuntime(14349):    at android.os.Handler.handleCallback(Handler.java:730)
02-19 15:32:04.070: E/AndroidRuntime(14349):    at android.os.Handler.dispatchMessage(Handler.java:92)
02-19 15:32:04.070: E/AndroidRuntime(14349):    at android.os.Looper.loop(Looper.java:137)
02-19 15:32:04.070: E/AndroidRuntime(14349):    at android.app.ActivityThread.main(ActivityThread.java:5289)
02-19 15:32:04.070: E/AndroidRuntime(14349):    at java.lang.reflect.Method.invokeNative(Native Method)
02-19 15:32:04.070: E/AndroidRuntime(14349):    at java.lang.reflect.Method.invoke(Method.java:525)
02-19 15:32:04.070: E/AndroidRuntime(14349):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:739)
02-19 15:32:04.070: E/AndroidRuntime(14349):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:555)
02-19 15:32:04.070: E/AndroidRuntime(14349):    at dalvik.system.NativeStart.main(Native Method)

Dies ist die Methode, die sollten in die Datenbank geschrieben:

public void insertKurs(String Kurs){
    long rowId = -1;
    try{
        //open Database
        SQLiteDatabase db = this.getWritableDatabase();
        //Content
        ContentValues values = new ContentValues();
        values.put(KURS_NAME, Kurs);
        //insert Values in Table 
        rowId = db.insert(TABLE_NAME_KURS, null, values);
        db.close();
    }catch (SQLiteException e){
        Log.e(TAG,"insert()",e);
    }finally{
        Log.d(TAG, "insert(): rowId=" + rowId);         
    }
}

Diese Methode funktioniert ohne Probleme:

public void insertPW(String PW){
    SQLiteDatabase db = null;
    long rowId = -1;
    try{
        //open Database
        db = this.getWritableDatabase();
        //Content
        ContentValues values = new ContentValues();
        values.put(PASSWORD_NAME, PW);
        //insert Values in Table 
        rowId = db.insert(TABLE_NAME_PW, null, values);
        db.close();
    }catch (SQLiteException e){
        Log.e(TAG,"insert()",e);
    }finally{
        Log.d(TAG, "insert(): rowId=" + rowId);         
    }
}

Dies ist die Methode, rufen die anderen:

public void onItemClick(AdapterView<?>arg0,View v, int position,long id){                   
            db.insertKurs(kursView1.getItemAtPosition(position).toString());

        }
    }); 

Danke für die Hilfe und sorry für mein Englisch 😀

  • Die Linie 95 Linie DBHandler.java?
InformationsquelleAutor user3328547 | 2014-02-19
Schreibe einen Kommentar