Herstellen einer Verbindung zu einer Datenbank mit dem dbExpress Treiber-Framework
Nach oben zu dbExpress verwenden
Diese Anleitung zeigt Ihnen, wie Sie mit dem dbExpress-Treiber-Framework eine Verbindung zu einer Datenbank herstellen und deren Datensätze lesen können. In dem Beispielcode enthalten die .ini-Dateien von dbExpress alle Informationen über die spezielle Datenbankverbindung, wie z.B. den Treiber, den Benutzernamen, das Passwort usw.
So verbinden Sie zu einer Datenbank und lesen deren Datensätze:
- Konfigurieren Sie die ini-Datei der Verbindung mit den Informationen über die Datenbank, zu der Sie eine Verbindung herstellen möchten. Dazu zählen der Treibernamen, der Benutzername, das Passwort usw.
- Rufen Sie ein Data.DBXCommon.TDBXConnectionFactory-Objekt ab, das von GetConnectionFactory zurückgegeben wird.
- Rufen Sie ein Data.DBXCommon.TDBXConnection-Objekt ab, das von GetConnection zurückgegeben wird.
- Öffnen Sie die Datenbankverbindung durch Aufrufen von Open für die Data.DBXCommon.TDBXConnectionFactory-Instanz.
- Rufen Sie ein Data.DBXCommon.TDBXCommand-Objekt ab, indem Sie CreateCommand für die Data.DBXCommon.TDBXConnection-Instanz aufrufen.
- Setzen Sie die Eigenschaft Text von Data.DBXCommon.TDBXCommand auf die gewünschten SQL-Anweisung. Rufen Sie Prepare für die Data.DBXCommon.TDBXCommand-Instanz auf.
- Führen Sie die SQL-Abfrage durch Aufrufen von ExecuteQuery aus. Eine Data.DBXCommon.TDBXReader-Instanz wird zurückgegeben.
- Lesen Sie den ersten Datensatz in der Datenbank, indem Sie Next aufrufen. Rufen Sie diese Methode auf, um die nachfolgenden Datensätze der Datenbank abzurufen.
- Ermitteln Sie alle gewünschten Informationen aus der Datenbank. GetColumnCount gibt beispielsweise die Anzahl der Spalten in der Datenbank zurück. Die Eigenschaften ValueType und Value von Data.DBXCommon.TDBXReader enthalten den Datentyp und den Wert einer angegebenen Spaltennummer im aktuellen Datensatz.
{
Dieses Beispiel verbindet zu einer Datenbank mithilfe von ini-Dateien.
Diese Dateien müssen für die Datenbank konfiguriert sein.
Nachdem Herstellen der Verbindung liest das Beispiel Werte und zeigt die
ANSI-Werte der ersten 100 Datensätze in einem Listenfeld an.
}
{ Rufen Sie TDBXConnection mithilfe von TDBXConnectionFactory ab... }
{ ConnectionName = Abschnitt in der ini-Datei der Verbindung }
class function TForm1.BuildConnectionFromConnectionName(ConnectionName: WideString): TDBXConnection;
var
ConnectionFactory: TDBXConnectionFactory;
ConnectionProps: TDBXProperties;
begin
ConnectionFactory := TDBXConnectionFactory.GetConnectionFactory;
ConnectionProps := ConnectionFactory.GetConnectionProperties(ConnectionName);
Result := ConnectionFactory.GetConnection(ConnectionProps);
{ ...oder verwenden Sie diese Zeile anstatt der oberen drei Zeilen. }
{ Result := TDBXConnectionFactory.GetConnectionFactory.GetConnection(TDBXConnectionFactory.GetConnectionFactory.GetConnectionProperties(ConnectionName)); }
end;
procedure Connect;
var
connection: TDBXConnection;
command: TDBXCommand;
reader: TDBXReader;
value: TDBXValue;
valueType: TDBXValueType;
colCountStr: string;
i, j: Integer;
numCols: integer;
ListBox1: TListBox;
const
sqlCommand = 'select * from employee';
begin
{ Verbindung zu DB öffnen. }
connection := BuildConnectionFromConnectionName('ConnectionName'); { der Name der DB-Verbindung }
try
{ Befehl abrufen. }
command := connection.CreateCommand();
try
command.Text := sqlCommand;
{ Abfrage ausführen. }
command.Prepare;
reader := command.ExecuteQuery;
try
{ Werte aus DB ermitteln. }
if reader.Next then
begin
numCols := reader.ColumnCount;
Str(numCols, colCountStr);
ListBox1.Items.Add('Number of columns = ' + colCountStr);
j := 1;
repeat
for i := 0 to reader.ColumnCount - 1 do
begin
valueType := reader.ValueType[i];
if valueType.DataType = TDBXDataTypes.AnsiStringType then
begin
value := reader.Value[i];
ListBox1.Items.Add(valueType.Name + ' = ' + value.GetString);
end else
ListBox1.Items.Add(valueType.Name);
end;
Inc(j);
until (j > 100) or not reader.Next;
reader.Next;
end;
{ Ressourcen freigeben. }
finally
reader.Free;
end;
finally
command.Free;
end;
finally
connection.Free;
end;
end;