Zitat von
mkinzler:
Zitat:
Zu erwähnen gibt es noch, dass man bei den uses "
DB" hinzufügen muss, da sonst ftInteger, ftString etc. nicht bekannt sind. Zumindest ist das so, wenn man Turbo Delphi Explorer einsetzt und alles "zu Fuß" einbauen muss. Vielleicht wäre auch zu überlegen, ob man diesen manuellen Weg noch etwas mit zusätzlichem Quelltext erleichtert.
Liegt aber nicht an
FB. Nimmt man einen lowlevel-Wrapper entfällt die
VCL-
DB-Abhängigkeit.
Hab ich ja auch nicht behauptet. Wenn man aber den Code für eigene Tests übernimmt und der Compiler meckert, dann ist man erst mal am Suchen.
Zitat von
mkinzler:
Zitat:
Andererseits habe ich jetzt ein Datenbank-System gefunden, das mir tausend mal lieber ist als Firebird
Und warum?
Gute Dokumentation, einfache Handhabung, Command Line Interface für Linux und Windows.
Wie die Geschwindigkeit und Zuverlässigkeit im Vergleich zu anderen
DBMS ist, weiß ich nicht aus eigener Erfahrung. Die Dokumentation lässt aber auf Gutes hoffen.
Man trägt die Pfade zum Wrapper in Delphi ein. Man kopiert die
DLL ins Programmverzeichnis. Fertig.
Codebeispiel aus dem Wrapper:
Delphi-Quellcode:
uses
... SQLiteTable3 ...;
procedure TForm1.btnDisplayImageClick(Sender: TObject);
var
slDBpath: String;
sldb: TSQLiteDatabase;
sltb: TSQLiteTable;
iID: Integer;
ms: TMemoryStream;
pic: TJPegImage;
begin
slDBPath := ExtractFilePath(Application.ExeName) + 'test.db';
if not FileExists(slDBPath) then
begin
MessageDlg('test.db does not exist.',
mtInformation,[mbOK],0);
Exit;
end;
sldb := TSQLiteDatabase.Create(slDBPath);
try
sltb := slDb.GetTable('SELECT ID FROM testtable');
try
if not sltb.Count = 0 then
begin
MessageDlg('No rows in the test database.',
mtInformation,[mbOK],0);
Exit;
end;
iID := sltb.FieldAsInteger(sltb.FieldIndex['ID']);
finally
sltb.Free;
end;
sltb := sldb.GetTable('SELECT picture FROM testtable WHERE ID=' + IntToStr(iID));
try
ms := sltb.FieldAsBlob(sltb.FieldIndex['picture']);
if (ms = nil) then
begin
MessageDlg('No image in the test database.',
mtInformation,[mbOK],0);
Exit;
end;
ms.Position := 0;
pic := TJPEGImage.Create;
pic.LoadFromStream(ms);
self.Image1.Picture.Graphic := pic;
pic.Free;
finally
sltb.Free;
end;
finally
sldb.Free;
end;
end;
Zitat von
mkinzler:
Zitat:
Es gibt nur eine
DLL, die man im Programmverzeichnis ablegen muss und der Zugriff ist ... ein Kinderspiel.
Gilt doch auch für die anderen embedded-DBs
Na dann entpack mal Firebird 2.0.1 Embedded
Win32:
10x
DLL, 3x CONF. Insgesamt 26 Dateien in 3 Ordnern.
Wo diese Dateien liegen dürfen, welche man überhaupt braucht und wie diese heißen müssen ("Just copy
fbembed.dll into the directory with your application. Then rename it to either
fbclient.dll or
gds32.dll depending on your database connectivity software." --
Artikel zu FB Emb 1.5) ist mir unklar.