Hallo,
Habe mir nun doch Firebird installiert, sowohl die Sever Version als auch die Embedded Version. Bei letzterer sagt mir die Dokumentation, das keine eigentliche Installation nötig ist, ich muss nur die Dateien aus dem Paket in mein Anwendungsverzeichnis kopieren. Einige Dateien, die in Unterordnern stecken, die aber laut Dokumentation ebensfalls benötigt werden, habe ich auch in das Anwendungsverzeichnis kopiert. Danach habe ich die Datei
fbembed.dll sowohl in:
-fbclient.dll
-gds32.dll
kopiert, so das ja nach Anforderung durch das
DBMS die richtige
DLL vorliegt.
Nun habe ich mit den Zeos Komponenten eine Testanwendung gebaut und sogar die Datenbankverbindung geschafft. Aber die Datei kann dennoch nicht geöffnet werden.
ich erhalte die Fehlermeldung:
Der Prozess kann nicht auf die Datei zugreifen, da sie von einem anderen Prozess verwendet wird. < I/O error during CreateFile(open)
Wie erreiche ich den Dateizugriff mit der Embedded Version von Firebird. Will mir die Geschichte mit den Zugriffsrechten gerne für später aufheben, jetzt besser erst mal exclusiven Zugriff auf meine Datenbank, die eh auf meinem lokalen Rechner gespeichert ist, auf den aus räumlichen Gründen eh nur ich zugreife. Benutzer-Rechtevergabe ist da gar nicht notwendig. Ich will nur mit meiner Testdatei rumspielen um erst mal das Zusammenspiel der Komponenten (UIB) kennen zu lernen. Da bin ich schon froh, überhaupt eine Verbindung zu meiner Datenbank aufbauen zu können. Für das Erlernen der Vergabe der Benutzerrechte brauche ich noch ein ganzes Stück länger.
Hier mein Quellcode, der die vom Firebird Team empfohlenen UIB Komponenten verwendet. Mit Zeos habe ich die Datenbakverbindung noch nicht geschafft.
Delphi-Quellcode:
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ZSqlUpdate,
DB, ExtCtrls, DBCtrls, Grids, DBGrids, ZDataset,
ZConnection, ZAbstractRODataset, ZAbstractDataset, uib, uibdataset;
type
TForm1 =
class(TForm)
DBGrid1: TDBGrid;
DBNavigator1: TDBNavigator;
DataSource1: TDataSource;
UIBConfig1: TUIBConfig;
UIBServerInfo1: TUIBServerInfo;
UIBDataSet1: TUIBDataSet;
UIBDataBase1: TUIBDataBase;
UIBScript1: TUIBScript;
UIBTransaction1: TUIBTransaction;
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
end.
//Hier noch die zugehörige .dfm Datei:
object Form1: TForm1
Left = 0
Top = 0
Caption = '
Form1'
ClientHeight = 286
ClientWidth = 426
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.
Name = '
Tahoma'
Font.Style = []
OldCreateOrder = False
PixelsPerInch = 96
TextHeight = 13
object DBGrid1: TDBGrid
Left = 88
Top = 136
Width = 320
Height = 120
DataSource = DataSource1
TabOrder = 0
TitleFont.Charset = DEFAULT_CHARSET
TitleFont.Color = clWindowText
TitleFont.Height = -11
TitleFont.
Name = '
Tahoma'
TitleFont.Style = []
end
object DBNavigator1: TDBNavigator
Left = 168
Top = 105
Width = 240
Height = 25
DataSource = DataSource1
TabOrder = 1
end
object DataSource1: TDataSource
DataSet = UIBDataSet1
Left = 16
Top = 24
end
object UIBConfig1: TUIBConfig
UserName = '
sysdba'
PassWord = '
masterkey'
Host = '
localhost'
LibraryName = '
gds32.dll'
DatabaseName = '
..\..\data\'
Left = 16
Top = 64
end
object UIBServerInfo1: TUIBServerInfo
UserName = '
sysdba'
PassWord = '
masterkey'
Host = '
localhost'
LibraryName = '
gds32.dll'
Left = 16
Top = 104
end
object UIBDataSet1: TUIBDataSet
Left = 64
Top = 24
end
object UIBDataBase1: TUIBDataBase
Params.Strings = (
'
sql_dialect=3'
'
lc_ctype=WIN1252'
'
password=masterkey'
'
user_name=sysdba'
'
sql_role_name=2')
DatabaseName = '
D:\Programme\Borland\BDS\4.0\Projects\Zeos\data\fbtest.fdb'
CharacterSet = csWIN1252
UserName = '
sysdba'
PassWord = '
masterkey'
LibraryName = '
gds32.dll'
Role = '
2'
Left = 64
Top = 64
end
object UIBScript1: TUIBScript
Database = UIBDataBase1
Left = 16
Top = 168
end
object UIBTransaction1: TUIBTransaction
DataBase = UIBDataBase1
Left = 16
Top = 208
end
end
Wie erreiche ich den erfolgreichen Zugriff auf meine Datei und welche Seiten der Firebird Dokumentation muss ich mir zum besseren Verständnis anschauen. Ich könnte auch ein besser verständliches Demo gebrauchen. Gibt es sowas, vielleicht zuerst mal nur mit einer Datei oder mit einer Master Detail Beziehung zwischen nur 2 Dateien?