Hallo,
die Datenbankverbindung unter .NET ist ja eigentlich recht einfach, wenn man
ADO.NET mit den entsprechenden Providern nutzt. Ich habe das gerade mal alles in eine Methode gepackt:
Delphi-Quellcode:
procedure TWinForm1.Button3_Click(sender: System.Object; e: System.EventArgs);
var
cmd : OdbcCommand;
con : OdbcConnection;
dataAdapter : OdbcDataAdapter;
DSet : DataSet;
begin
con := OdbcConnection.Create('DSN=wall;UID=wwwrun;PWD=');
cmd := con.CreateCommand();
cmd.CommandText := 'SELECT * FROM WetterData';
dataAdapter := OdbcDataAdapter.Create(cmd);
DSet := DataSet.Create;
dataAdapter.Fill(DSet);
DataGrid1.DataSource := DSet;
end;
Hier greife ich ja noch über das alte
ODBC auf die Datenbank zu. Dieser Weg ist ja gerade unter .NET nicht sehr optimal. Ein direkte nativer Zugriff mit den entsprechenden .NET Providern ist da ja besser und funktioniert quasi genau so. Z.B. muss ich als Datentyp ja nur den MySQLConnection oder SQLConnection statt ODBCConnection nehmen.
Ich suche aber eine Möglichkeit das allgemein zu halten und bspw. per Konfigurationsdatei wählen welche Verbindung ich nehmen möchte.
Ich habe gesehen, dass alle Klassen von einer Klasse abgeleitet wurden, bei der Connection-Klasse z.b. von IDbConnection. Also muss man mein Vorhaben irgendwie realisieren können. Hinzu kommt, dass wenn ich z.B. den
MySQL-Provider direkt nehmen würde, dieser auch auf dem Zielrechner installiert sein muss. Ist dieser nicht installiert, aber in dem Programm genutzt, müsste es also zu einer
Exception kommen. Es wäre also noch genialer, wenn man diese dynamisch laden könnte. Ich stelle mir das so vor:
In einem String steht z.B. Firebird oder
MySQL, dann wird der entsprechende Provider verwendet, obwohl dieser nicht explizit im Quelltext genannt ist.
Ich hoffe ihr habt mich verstanden und könnt mir helfen
. Für den einen oder anderen .NET Crack ist das sicherlich kein Problem
.
PS: Bitte beachtet, dass ich gerade erst mit .NET angefangen habe zu spielen
Nachtrag: Zur Verdeutlichung suche ich also eine Funktion oder Methode, die mir ein DataSet zurückgibt:
Delphi-Quellcode:
function getDataSet(conString, Art,
sql :
String) : DataSet;
begin ...
end;
Wobei Art angeben soll, wie zur Datenbank verbundne werden soll und welche überhaupt genommen wird. Also z.B. Art :=
MySQL;
SQL gibt das
SQL-Statement an.
Nur so als Verdeutlichung