Zwischen verschiedenen Datenbanksystemen umschalten

  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Zwischen verschiedenen Datenbanksystemen umschalten

    Hi,

    ich suche eine Möglichkeit zwischen mehreren Datenbanksystemen (z.B. SQLite, MSSQL und MySQL) umzuschalten.

    Der Benutzer soll im Programm auswählen können, welchen Typ er nutzen möchte. Nachdem das Proramm neugestartet hat, wird auf die passende Datenbank zugegriffen.
    Aktuell löse ich das über eine Select Case-Anweisung, mit welcher ich zwischen den passenden Datenbanktyp wähle.
    Also in etwa so:

    VB.NET-Quellcode

    1. Select Case DB_Typ
    2. Case "SQLite"
    3. 'Hier wird dann unter anderem der ConnectionString und die SQL-Abfrage usw gebildet
    4. 'und ggf. auf die Antwort der Datenbank reagiert und mit den Daten der Datenbank weitergearbeitet.
    5. Case "MySQL"
    6. 'Hier wird dann unter anderem der ConnectionString und die SQL-Abfrage usw gebildet
    7. 'und ggf. auf die Antwort der Datenbank reagiert und mit den Daten der Datenbank weitergearbeitet.
    8. End Select


    Es funktioniert zwar, ist aber nicht gerade die feine Art.
    Ist es Möglich, dass zumindest die SQL-Abfrage einheitlich gestaltet werden kann? Da ich mit Parametern arbeite, müssen diese für SQLite mit "@" beginnen, aber für MySQL mit "?".
    Auch die Abfragen selbst sind teilweise unterschiedlich, da es Befehle mal nur für den einen und mal nur für den anderen Datenbanktyp gibt.

    Danke für die Hilfe
    wintoolz.de
    • wintoolz.KeyLocker - Programm zum sicheren Verwalten von Passwörten
    • wintoolz.CodeGallery - Datenbank für Codebeispiele veschiedener Programmiersprachen
    • wintoolz.Haushaltsbuch - Dient zum Auflisten der Aktivitäten ihrer Bankkonten

    Benutze auch du Ecosia
    Mach eine Klasse für den DB-Zugriff und erzeuge zwei abgeleitete Klassen für MySQL und SQLite.
    Dann kannst du die Unterschiede überschreiben und die gemeinsamen Dinge in der Hauptklasse abhandeln.

    Und im Select erzeugst du eine Instanz der einen oder der anderen Klasse.

    Literatur: msdn.microsoft.com/de-de/library/5x4yd9d5(v=vs.90).aspx
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    @T1g0r Ich würde das streng objektorientiert machen.
    Mach Dir eine allgemeine DB-Basisklasse, von der Du SQLite und MySQL und ggf. weitere ableitest. In den abgeleiteten Klassen stehen die Spezifika der jeweiligen Systeme.
    Die instanziierten Klassen fütterst Du mit Deinen Daten und feddich.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Hallo,
    danke euch für die schnellen Antworten.
    Habe noch ein wenig im Internet recherchiert und versuche es mal mit dem Entity-Framework.
    wintoolz.de
    • wintoolz.KeyLocker - Programm zum sicheren Verwalten von Passwörten
    • wintoolz.CodeGallery - Datenbank für Codebeispiele veschiedener Programmiersprachen
    • wintoolz.Haushaltsbuch - Dient zum Auflisten der Aktivitäten ihrer Bankkonten

    Benutze auch du Ecosia
    Jo, bei die Datenbänkerei ist schon eine erhebliche Vereinheitlichung möglich.

    Auf die Spitze getrieben habich das in diesem Werk: allgemeine Zugriffs-Lösung für: MySql, Access, SqlCe, SqlServer, DatasetOnly
    Das gesamte Zugriff-System basiert auf einem einzigen Input: der Providerfactory.
    Ist ziemlich toll, nur keine benutzsts, weil der Code ist sehr kompliziert (die Benutzung hingegen ziemlich einfach).

    Leichtere Kost ist dieses hier: Dataset->Db - aber ist weniger leistungsfähig, und fürs switchen der Provider nicht vorgesehen.



    Ob das EF dich beim Switchen unterstützt ziehe ich etwas in Zweifel. Gibst du uns Rückmeldung, wie du damit klarkommst?
    thx