Ich habe mir eigentlich nicht getraut dich hier zu deprimieren und den Weg zu zeigen, der in .Net 2.0 möglich wäre.
Dort kann man über die DbProviderFactories eine Factory nach Namen laden und sich natürlich alle registrierten Factories ausgeben lassen.
Selbst wenn dein DataProvider keine Factory besitzt lässt sich die mit ca. 50-60 Zeilen selbst schreiben (die Methoden überschreiben, die du bei deinem
DBMS brauchst).
Du musst sie auch nicht im System regisrtieren, das .Net Konfigsystem schaut ja zuerst in deine App.config. Es reicht also dort deine Factory einzutragen.
Hier mal etwas pseudo code:
Delphi-Quellcode:
var factory := DbProviderFactories.GetFactory(factoryName);
using connection := factory.CreateConnection() do
using command := connection.CreateCommand() do
begin
with bldr := factory.CreateConnectionStringBuilder() do
begin
bldr['user id'] := deineUserId;
bldr['password'] := deinPasswort;
bldr['data source'] := deineDataSource;
bldr['database'] := deineDatabase;
connection.ConnectionString := bldr.ConnectionString;
end;
command.CommandText := 'SELECT X FROM Y WHERE Z = :Z';
with prm := command.CreateParameter() do
begin
prm.ParameterName := 'Z';
prm.Value := deinWert;
command.Parameters.Add(prm);
end;
using da := factory.createDataAdpater() do
begin
da.SelectCommand := command;
da.Fill(deineDatatable);
end;
end;
Zusammen mit System.Transactions ist das ziemlich mächtig.