Verknüpfung von Datenbanken?

  • Moin zusammen!


    Ich stehe gerade auf dem Schlauch und bräuchte eure Meinung dazu:


    1) Ich habe eine Activity die ein ListView hat
    Die Activity zählt Autohersteller auf
    Über die selbe Activity können Autohersteller beliebig hinzugefügt werden
    2) Klicke ich auf einen Autohersteller, so öffnet sich eine neue Activity mit einer weiteren ListView
    Diese ListView zählt alle Modelle/Fahrzeuge auf
    Auch Modelle/Fahrzeuge kann ich in der Activity hinzufügen
    3) Klicke ich auf ein Modell/Fahrzeuge so öffnet sich wieder eine Activity mit einer ListView
    Diese ListView wird alle möglichen Daten zum Fahrzeug fassen


    Mir ist jetzt speziell wichtig, dass ich die Daten aus dem 3) Punkt importieren und exportieren kann.


    Also Person XYZ sollte auf seiner App dann auch die Daten importieren können, wenn er den Hersteller und das Modell/Fahrzeug hinzugefügt hat.
    Den 1) Punkt hatte ich jetzt mit einer ORMLite Datenbank umgesetzt und habe die Datenbank einfach "Autohersteller.db" genannt.


    Also ich den 2) Punkt umsetzen wollte dachte ich mir:
    Dafür lege ich auch eine ORMLite Datenbank an.
    Der Name der Datenbank sollte sich aus dem Namen des Hersteller und dem dann hinzugefügten Fahrzeug zusammensetzen.
    Über den intent-Befehlt wollte ich dann einfach den Hersteller, den ich in der ListView angeklickt habe, als String an die neue Activity weitergeben.


    Das Problem ist, wenn der Befehl:
    OpenHelperManager.getHelper(this, DatabaseHelper.class);
    Ausgeführt wird kann ich ihm den String nicht übergeben und der DatabaseHelper.class fehlt dann der Name des Herstellers.
    ----> Wie kann man also Datenbanken mit dynamischen Namen erstellen?




    Ich hatte dann auch eine 2te DatabaseHelper.class angelegt (DatabaseHelper2.class), weil in der DatabaseHelper.class der Datenbankname ein statischer war ("Autohersteller.db")
    und die nächste Datenbank einen "dynamischen" Namen hat, der sich aus dem ausgewählten Hersteller und aus dem Modell/Fahrzeug zusammensetzt.
    So sind ja diverse Möglichkeiten vorhanden.



    Ich finde das aber mit mehreren DatabaseHelper-Klassen nicht sehr elegant. Allerdings gibt es in der Klasse auch eine Methode:
    public Dao<Hersteller, Integer> getHerstellerDao()...
    Beim Modell/Fahrzeug bräuchte ich ja auch so eine Methode.
    ---> Heißt es also, dass ich so eine DatabaseHelper-Klasse immer nur für eine einzige Klasse auslegen kann?


    Hättet ihr da eventuell einen besseren und eleganteren Weg?

  • Hallo


    Warum machst du das so umständlich mit mehreren Datenbank Dateien?



    Ich würde eine DB erstellen mit mehrerenTabellen und die untereinander in Beziehung setzen.


    Somit hast du auch alle Vorteile die eine DB bietet. Ich würde dir vorschlagen dich erstmal etwas mit Datenbanken und ein bisschen SQL zu beschäftigen.


    Denn das Herzstück ist deine Db und die ListView dient dabei hauptsächlich zum Anzeigen.


    Du machst somit eine Abfrage an die Db und bekommt genau die Daten im Cursor die du anzeigen willst.

  • Ja da hast du recht!


    Bin jetzt auch zu dem Schluss gekommen, dass ich eigentlich eine einzige Datenbank nutzen kann.


    Die Klasse Hersteller kann ja ein ArrayList von Fahrzeug haben und Fahrzeug ein ArrayList von "Ausstattung" und per query-Abfrage könnte ich doch an meine Informationen kommen, die ich brauche oder?


    Ich weiß nur noch nicht ganz genau wie ich das mit dem importieren und exportieren der "Ausstattung" händeln soll.


    Und kann ich denn die Tabellennamen dynamisch erstellen? Oder muss ich den im Quelltext fest vorgeben?



    Aber ich befasse mich jetzt erstmal mit Datenbanken im Allgemeinen.

  • Wie so Tabellen Nahmen Dynamisch?
    du erstellst datensätze und nicht Tabellen.
    Die Tabellen werden verbunden Über Id's haste eine Tabelle Hersteller, Modell, MotorTyp
    wenn ein neues auto hinzukommt wird nicht eine neue Tabelle erstellt sondern ein Datensatz.


    Ich glaube du weist nicht was eine Db ist und wie man sie verwendet und was eine DB leisten kann.
    hier mal was für den Anfang


    https://entwickler.de/online/d…n-und-entwurf-115676.html

Jetzt mitmachen!

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