Programmabsturz bei DB-Connection auserhalb der Haupt-Activity

  • Hallo :)


    Ich habe ein Problem mit meiner Datenbankverbindung .
    Sobald ich die Variable dbCon verwende um zb ein Statement abzusetzen, bekomme ich eine Fehlermeldung (NullPointException) und die App beendet sich.


    Die Activity in der das ganze passiert sie so aus (der Fehler wird laut Log bei Zeile 23 ausgelöst):


    Ich habe die Objekte für "db" und "dbCon" in der Haupt Activity angelegt, da ich sonst schon bei der Erstellung einen Fehler bekommen würde.
    Die Datenbank wurde schon erstellt und ist mit DummyDaten gefüllt und ich bin mir auch sicher, dass das SQL Statement richtig ist ;)


    Woran liegt es, dass ich einen Fehler bekomme sobald ich das dbCon Objekt auserhalb der Haupt Act. anfasse?


    Vielen Dank schonmal im Vorraus für Ratschläge und Tipps :)

  • Hmm, da es static ist, dürfte der GC ja nicht zuschlagen, wenn deine Activity verlassen wird...ich würde an deiner Stelle in StartActivity static Methoden getSQLiteDB() und getEinkaufsDB() machen, die dann checken, ob die Variablen null sind und sie evtl. initialisieren. Wenn du dann die Variablen über diese Methoden setzt, ist sichergestellt, dass sie immer initialisiert sind.

  • Also die NullPointerException hab ich geklärt


    erstens hab ich natürlich den fehler gemacht, die Methode die das Array erzeugt direkt oben bei der deklaration reinzuhauen, dadurch wird das dbCon objekt erst später erzeugt (in OnCreate) und ist darum natürlich null (Asche auf mein Haupt -.-)


    ich hab den Code jetzt so verändert:


    Danach bekam ich dann eine neue Exception von SQLite, die hab ich recherchiert und festgestellt, dass man anscheinend in der RawQuery kein Stringarray als zweites Attribut mitgeben darf, da es sonst zu besagtem fehler kommt (Warum das so ist hab ich nicht verstanden aber egal)


    Code
    c = dbCon.rawQuery(SQLStatements.SELECT_EINKAUF_ID, null); // Hier gibt es jetzt keinen fehler mehr
    ...
    c = dbCon.rawQuery(SQLStatements.selectEinkaufsliste(id),
       new String[] {SQLStatements.TABLE_LISTE[1], SQLStatements.TABLE_LISTE[2]}); // SQLiteException wegen dem String[]


    Also alles durch null ersetzt und siehe da, es geht :D !

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!