Mit SQLite Studio erstellte Datenbank öffnen

  • Guten Abend zusammen,


    ich habe als Neuling mal eine bzw. zwei Fragen zur Datenbank SQLite. Die Beispiele in Büchern Tutorials etc. leiten das Thema Datenbanken immer damit ein, dass im Quelltext mit "CREATE TABLE" eine Datenbank erzeugt wird. Das erzeugt aber zwei Datenbanken. Im Ordner .../databases/datenbank.db und Datenbank.db-journal.


    Meine Idee war es jetzt eine Datenbank mit SQLite Studio zu erstellen und einfach in .../databases/meinedatenbank.db hinein zu kopieren. Nur hier fehlt dann die Datenbank mit dem Zusatz "journal".


    Wie bekomme ich den Zugriff auf meinedatenbank.db? In den Tutorials werden Helferklassen (SQLiteOpenHelper) erzeugt. Hier dann immer zuerst "CREATE TABLE". In Anlehnung an eine Helferklasse habe ich in der insert-Prozedur das Problem, dass "SQLIteDatabase db = getWritableDatabase()" nicht funktioniert.


    Eine weitere Frage bezieht sich auf die "ContentValues". Hier wird mit "values.put(Attribut, Wert)" und anschließend "db.insert(Tabellenname, null values) der Inhalt in die Tabelle weggeschrieben. Wie ordnet man denn hier Werte zu, wenn Tabellen über Fremdschlüssel miteinander in Verbindung stehen. Muss man dann den Weg über SQL nehmen {db.execSQL()}?


    Und wenn ich schon dabei bin Fragen zu stellen: Letztendlich möchte ich mit Access und ODBC-Treiber vom Computer, nach Möglichkeit über WLAN, auf die SQLite-Datenbank des Android-Gerätes zugreifen und die Daten überspielen. Funktioniert das? Wenn ja, wie?


    Auf Eure Antworten freue ich mich und danke Euch für die Mühen.


    Viele Grüße


    Zarathustra

  • Hi,


    hatte ein ähnliches Problem bei meiner IT42 App (https://play.google.com/store/…id=com.jentsch.it42&hl=de) und habe das dann wie folgt gelöst.


    CREATE TABLE brauchst Du nicht. Die Datenbank öffnest Du dann mit:



    Code
    SQLiteDatabase db = SQLiteDatabase.openDatabase("meinedb.db", null, 0);

    Das ist alles.

  • Hallo Michael,


    vielen Dank für den Tipp. Leider bekomme ich sinngemäß die Fehlermeldung: "faild to open meinedb.db" So oder so ähnlich. Die Datenbank kann nicht geöffnet werden. Nun bin auf dem Mac zugange. Ich hatte aber auch schon, bevor ich sie nach databases kopierte, allen Nutzern Lese- und Schreibrechte verpasst.


    Die Fehlermeldung kam auch schon, als ich mit SQLiteDatabase db = getWritableDatabase() ran wollte.


    Na, ich fahr erst mal in's WE. Montag geht es weiter.


    Vielen Dank und viele Grüße


    Zarathustra

  • Hallo,


    ich hab's raus. War mit Michaels Hilfe nicht mehr so schwer.


    Code
    SQLiteDatabase db = SQLiteDatabase.openDatabase("/data/data/package-name/databases/meinedb.db", null, 0);


    Es muss einfach der komplette Pfad zur Datenbank angegeben werden. Dann wird sie auch gefunden.


    Bleibt noch die Frage mit dem Access Zugriff offen. Funktioniert das?


    Grüße


    Z.

  • Hallo,


    zunächst danke für den Tipp mit dem ODBC-Treiber. Es gibt wohl auch einen von einem Herrn Christian Werner: http://www.ch-werner.de/sqliteodbc/


    Ich habe mich wohl etwas zu früh gefreut. Seit einiger Zeit bekomme ich die Meldung:


    Failed to open database '/data/user/0/packagename/databases/meinedb.db'.
    12-03 20:18:32.363 17706-17706/? E/SQLiteDatabase: android.database.sqlite.SQLiteCantOpenDatabaseException: unknown error (code 14): Could not open database


    wobei die Datenbank eigentlich nicht unter .../user/0/... liegt, sondern unter /data/data/packagenme/databases/...


    Ich versuchte unter user/0/ den entsprechenden Pfad zu erstellen, da sagt das System, dass es den Ordner bereits gäbe. Ich sehe ihn aber nicht. Ich wollte meine Datenbank einfach dorthin kopieren.


    Ich kann aber auch keine neue DB erzeugen. Sprich in der onCreate-Methode mit db.execSQL() eine neue Tabelle anzulegen. So wie in den im Netz zu findenden Tutorials. Es funzt irgendwie nix mehr in meinem Projekt.


    Hat jemand eine Ahnung?


    Viele Grüße


    Zarathustra

  • Hallo Zusammen,


    hier noch ein Tipp, für Leute die ein ähnliches Problem haben, bzw. versuchen eine extern erstellte SQLite-DB in Betrieb zu nehmen.


    Ich hatte den Unter-Ordner "databases" von: /data/data/meinpackage/... selbst erzeugt. Das mochte der Emulator wohl nicht.
    Nachdem ich den Emulator gelöscht und einen neuen erzeugt hatte habe ich beim ersten mal eine DB mit der onCreate-Methode erzeugt. Der Unterordner /.../.../.../databases wird nun automatisch erstellt. Hier kann man dann seine DB hineinkopieren und die onCreate Methode im "DB-Helper" wieder stillegen.


    DAS FUNZT BEI MIR JETZT!!


    Viele Grüße


    Zarathustra

Jetzt mitmachen!

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