Hallo,
ich arbeite gerade an einem kleinen Programm für die Uni. Als DB soll dieses CSV-Files verwenden, jedoch will ich die Möglichkeit haben später leicht auf SQL, SQLite oder Ähnliches umzusteigen. Also versuche ich gerade die Datenbank Geschichte so weit wie möglich zu abstrahieren.
Meine "CSV-Datenbank-Treiber"-Klasse hat Methoden wie getAllRows() oder deleteRow(). Diese Methoden soll natürlich später auch meine anderen Datenbank-Klasse bereitstellen. Über ein Interface lege ich fest das beide die benötigten Methoden liefern.
In meinem Programm soll nun einfach festgelegt werden, welche Datenbank-Klasse verwendet wird. Also zB:
Wobei also Attribute der Datenbank-Typ sowie ein Connection-String übergeben wird. Bei CSV ist das halt der Pfad zur CSV-Datei.
Die Klasse DB macht dann nix anderes als ein Object der Klasse DBDriverCSV zu erstellen und den Connectionstring "test.csv" dem Konstruktor zu übergeben. Zusätzlich wird dann über das Object DBDriverCSV.getAllRows() aufgerufen.
Ich hoffe ich habe meine Problematik etwas verständlich dargestellt. Wie würdet ihr so etwas ansatzweise realisieren?
mfg
ich arbeite gerade an einem kleinen Programm für die Uni. Als DB soll dieses CSV-Files verwenden, jedoch will ich die Möglichkeit haben später leicht auf SQL, SQLite oder Ähnliches umzusteigen. Also versuche ich gerade die Datenbank Geschichte so weit wie möglich zu abstrahieren.
Meine "CSV-Datenbank-Treiber"-Klasse hat Methoden wie getAllRows() oder deleteRow(). Diese Methoden soll natürlich später auch meine anderen Datenbank-Klasse bereitstellen. Über ein Interface lege ich fest das beide die benötigten Methoden liefern.
In meinem Programm soll nun einfach festgelegt werden, welche Datenbank-Klasse verwendet wird. Also zB:
Code:
DB DBDriver = new DBDriver("CSV", "test.csv");
DBDriver.getAllRows();
Die Klasse DB macht dann nix anderes als ein Object der Klasse DBDriverCSV zu erstellen und den Connectionstring "test.csv" dem Konstruktor zu übergeben. Zusätzlich wird dann über das Object DBDriverCSV.getAllRows() aufgerufen.
Ich hoffe ich habe meine Problematik etwas verständlich dargestellt. Wie würdet ihr so etwas ansatzweise realisieren?
mfg