Datenbank / database.db ist da obwohl es nicht vorhanden sein dürfte

  • Hallo hier bin ich mal wieder.
    Habe wieder mal ein kleines Problem mit der Datenbank.
    es funktioniert eigentlich alles ganz gut bis auf -


    Ich starte das Programm mit einer angeschlosser Hardware (LG G4)
    Mein programm ist nicht installiert (war zwar schon aber jetzt deinstalliert)
    Wenn ich es nun mit Android Studio schritt für schritt debugge und nach der Datenbank abfrage, dann sagt mit die Variable check = true (????)

    Code
    boolean check = checkDataBase();
    ....
    private boolean checkDataBase()
        {
            File dbFile = new File(DB_PATH + "/"+ DB_NAME);
            return dbFile.exists();
    }


    Wenn ich aber vorher die Datenbank lösche (was ich natürlich nicht will)

    Code
    myDBHelperClass.DeleteDatabase("Master");
    .....
    
    
    boolean DeleteDB1OK = myContext.deleteDatabase(DB_PATH + "/"+ DB_NAME);

    dann funktioniert auch alles wieder.
    Ich kann dann die Löschfunktion wieder raus nehmen und das Programm funktionert immer noch perfekt.
    Erst bei einer Deinstallation fängt das Problem wieder von vorne an.
    (Nach der Installation und beim ersten start versuche ich die Datenbank vom Assets Ordner in den databases Ordner zu kopieren.)
    Ich kann leider auch nicht auf die Datenbank im LG hinnavigieren um zu sehen was da faul ist, da ich keine Superuser rechte auf dem Handy habe und auch nicht aktivieren möchte.
    Bei der Simulation mit einem Virtuellen Handy hab ich das irgendwie noch nicht hinbekommen - ist auch irgendwie komisch - werde es aber nochmal teste
    Hat schon mal jemand das selbe Problem gehabt ???




    Gruß
    herrm_no

  • Also irgendwie versteh ich das ganze jetzt nicht mehr. Ich emuliere mit mehreren "Handys" oder auch Hardware Handys.
    Einmal erstellt er keine leere Datenbank manchmal schon. Hab irgendwie doch noch nicht rausgekriegt was der Grund dafür ist.


    Also zum Code
    ich habe zwei Klassen in der Main Activiy definiert

    Code
    DataBaseHelper myDBHelperClass = new DataBaseHelper(this);
    DataBaseHelperAssets myDBHelperAssetsClass = new DataBaseHelperAssets(this);




    dann überprüfe ich ob die database.db schon existiert oder nicht. Wenn nicht kopiert er die Datenbank vom Assets Folder in den "APK" Folder.
    Danach hole ich mir noch die Assets Datenbank als kopie in den "APK" Folder > um später beide zu vergleichen - das funktioniert auch super.



    in myDBHelperClass.copyDataBase("NEWCREATE") überprüfe ich sofort ob database.db schon vorhanden ist > mit "checkDataBase"
    Und genau da sagt er mir schon das sie vorhanden ist (allerdings ohne Inhalt) dbFile.exists() = true.
    Jetzt frag ich mich wo diese leere Datenbank herkommt. (leer bedeutet, alle Columns sind da aber keine Zeilen)
    Wenn ich die App deinstalliere und danach schritt für schritt simuliere, dann kann die doch noch gar nicht da sein ????
    Wie gesagt, ich hab gedacht ich weis wie ich es immer nachvollziehen kann aber dann auf einmal war alles wieder nicht so wie gedacht.



    Code
    public boolean checkDataBase()
        {
    
    
            File dbFile = new File(DB_PATH + "/"+ DB_NAME);
            return dbFile.exists();}


    Pfad definition in DataBaseHelper Class

    Code
    private static String DB_PATH = "/data/data/com.herrm_no.tt_training/databases";
      private static String DB_NAME = "database.db";// Database name
  • wenn es um das Thema geht eine bestehende app und vom User schon genutzte db mit Daten zu erweitern.
    Dann musst du doch nur die db Version Prüfen. Bei einem update der app mist du auch die db versions Nummer erhöhen. Die db in denn assets sollte die gleiche Nummer haben. Beim Öffnen der db wird dann wenn schon eine db mit niedrigerer Nummer existiert. Die update Methode der db aufgerufen. Dort kopierst du die db aus den assets als Cola mit anderen Namen. Und kannst nun vergleichen. Danach ist die Nummer deiner db erhöht

  • Wie immer vielen dank für deine Antworten.
    Tut mir leid, dass meine Antwort so lange gedauert hat, aber ich hatte etwas viel Arbeit und keine Zeit für die App / Hobbies
    Ich hab es zwar jetzt scheinbar hinbekommen (hab den Code etwas optimiert). Kann aber echt nicht sagen warum es jetzt geht.
    Ich werde nun erst mal alle kleinen Fehler noch beheben und das Programm fertig stellen.
    Danach muss ich mich doch nochmal auf die Datenbank stürzen.
    Da gibt es sicher waaaahnsinnig viel zu verbessern.
    Gruß

  • Hi,
    Hier mal ein Grundgerüst für das Laden der DB aus den Assets

Jetzt mitmachen!

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