Einzelnen Beitrag anzeigen

Alexander

Registriert seit: 28. Aug 2002
Ort: Oldenburg
3.513 Beiträge
 
Turbo Delphi für .NET
 
#1

Allgemeiner Datenbankzugriff unter .NET

  Alt 24. Mai 2006, 11:14
Datenbank: Alle :) • Zugriff über: ADO.NET
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
Alexander
  Mit Zitat antworten Zitat