Datenzugriff unabhängig von DB (Odbc?)

Deemax

Erfahrenes Mitglied
Hallo,

arbeite mich gerade in die Datenzugriffstechniken von .NET ein. Und hab noch nicht so den Durchblick. Ich möchte einen Datenzugriff unabhängig von einer Datenbank (Access und Mysql) erstellen. Sprich z.B. einfach durch das Umstellen des Connectionstrings die Datenbank ändern.
Muss ich das über die Odbc-Schnittstelle machen? Wie sieht dann ein Zugriff aus?
 
Idealerweise baust Dir einen Database-Abstraction-Layer der das für dich macht. Generell kannst auf alles per ODBC zurgreifen, sofern die entsprechenden Treiber vorhanden sind. Die einzelnen Parameter (ConnectionString etc.) kannst Du ja aus einem XML-File auslesen in welchem diese hinterlegt werden.

Norbert
 
Hallo.

Soweit ich weiss, gibt es bei .NET zwei Möglichkeiten:
Entweder benutzt du eine SQL-Datenbank, die du dann mit
Code:
using System.Data.SqlClient;
einbinden musst und auch alle Befehle dann später z.B. SqlCommand, SclDataAdapter usw. heissen.
Oder aber du benutzt eine der anderen von .NET unterstützten Datenbanken wie Oracle, Access. Diese musst du dann mit
Code:
using System.Data.OleDb;
einbinden und entsprechend heissen die Befehle hier dann OleDbCommand etc..
Generell denke ich aber, dass es nicht möglich ist, alle Datenbanken allgemein anzusprechen, da sie sich nicht nur in ihrer jeweiligen Syntax unterscheiden (die du ja mit einem String allgemein halten kannst), sondern auch noch darin, ob es sich um einen verwalteten Datenbank-Provider handelt (SQL wird in der Literatur als der einzige verwaltete genannt), oder eben um einen nicht-verwalteten(->"OleDb").
Und dann gibt es da noch Datenbanken, die auch mit OleDb nicht ansprechbar sind, für die gibt es Odbc.
Also nochmal kurz zum mitschreiben:
  • SQL läuft mit SqlClient
  • MySQL läuft (bis zu einem gewissen Grad) mit SqlClient
  • Access läuft mit OleDb
  • Oracle läuft mit OleDb
  • Bei allen anderen Datenbanken musst du die mit OleDb probieren und wenn es nicht klappt, Odbc benutzen
Fazit: Nach meinem Kenntnisstand ist es nicht zu empfehlen, einen
"Generaldatenbankzugriff" zu implementieren.

Ich hoffe mal, ich hab dich nicht völlig vom "datenbankeln" abgeschreckt. ;)

EDIT: Auf alles per Odbc zuzugreifen halte ich nicht für sehr performant.

Gruß, Niko
 
Perfomant ist es definitiv nicht. Aber die einfachste Möglichkeit einen Database-Abstraction-Layer zu implementieren.

Willst Du aus jeder Datenbank das Optimum herausholen, na dann musst Du die entsprechenden Provider verwenden.
 
Hmmm... Nun gut, Norbert, da muss ich dir schon recht geben. :-)
Wenn man unbedingt alle Datenbanken unter einen Hut bringen will, kommt man daran wohl nicht vorbei.
Ich für meinen Teil entscheide mich aber halt lieber für eine Datenbank.
Und da am besten MSSQL Version 7.0 oder höher, weil ich's gern so verwaltet wie möglich hab.
Das hab ich so in meinem .NET-Buch gelernt...:)

Gruß, Niko
 
Tja, dabei gibts nur ein Problem:
Nicht jeder kann sich einen MS-SQL-Server leisten bzw. will ihn sich leisten. Daher macht es manchmal sehr wohl Sinn, eine andere Datenbank zu unterstützen. Ebenfalls, wenn die Möglichkeiten der Datenbank zB. zu vielfältig sind und das DBMS daher zuviel Balast mitschleppt.
 
Zurück