kein Zugriff auf einen embedded Firebirdserver

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
Antworten
Alfred
Beiträge: 101
Registriert: Do 22. Nov 2007, 20:06
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: München

kein Zugriff auf einen embedded Firebirdserver

Beitrag von Alfred »

Das Verzeichnis meines embedded Firebirdservers sieht wie folgt aus:

d:\lazarus\firebird7\firebird7_unit1.pas
d:\lazarus\firebird7\firebird7_unit1.ppu
d:\lazarus\firebird7\gds32.dll
d:\lazarus\firebird7\ib_util.dll
d:\lazarus\firebird7\icudt30.dll
d:\lazarus\firebird7\icuuc30.dll
d:\lazarus\firebird7\firebird.conf
d:\lazarus\firebird7\firebird.msg
d:\lazarus\firebird7\firebirdtestdb.fb
d:\lazarus\firebird7\pfirebird7.lpi
d:\lazarus\firebird7\pfirebird7.lpr
d:\lazarus\firebird7\int\fbintl.dll
d:\lazarus\firebird7\int\fbintl.conf
d:\lazarus\firebird7\udf\fbudf.dll

Die firebird.conf enthält folgenden Eintrag:

RootDirectory = d:\lazarus\firebird7

IBConnection1 enthält folgende Einträge:

Database: d:\lazarus\firebird7\firebirdtestdb.fb
Hostname: keine Eintrag
Passwort: mypw
user: sysdba

Fehlermeldung: IBConnection1:DoInternalConnect: -unavailable database

Der locale Server ist nicht gestartet.

Lazarus 0.9.25 und FPC 2.2.0

Gruß
Alfred

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6766
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Beitrag von af0815 »

Embeded 2.x schätze ich mal.

Dann geht mir die fbembed.dll ab. Zusätzlich noch UseEmbedded := true setzen, dann sollte der FPC auch die DLL nehmen (und die entsprechende unit einbinden).

Es sieht aus, als würde er nur nach einen Server suchen, nicht nach den Embeded Version.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Alfred
Beiträge: 101
Registriert: Do 22. Nov 2007, 20:06
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: München

Beitrag von Alfred »

Hallo af0815,

es ist 2.0.3.

Die gds32.dll ist die umbenannte fbembed.dll.

An welcher Stelle wird denn useEmbedded := true gesetzt?

Ich denke deine Vermutung ist richtig, da bei aktiviertem lokalem Server die Verbindung
sofort hergestellt wird.

Gruß
Alfred

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6766
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Beitrag von af0815 »

Folgendes geht bei mir zur Laufzeit (und speichert auch die Ergebnisse in der DB.

Code: Alles auswählen

implementation
uses ibase60dyn;
 
procedure TForm1.FormClose(Sender: TObject; var CloseAction: TCloseAction);
begin
  SQLQUERY1.UpdateMode := upWhereChanged;
  SQLQUERY1.ApplyUpdates;
  SQLQUERY1.Active:=false;
  IBConnection1.Connected:= false;
end;
 
procedure TForm1.FormCreate(Sender: TObject);
begin
  UseEmbeddedFirebird := True;
  IBConnection1.Connected:= True;
  SQLQuery1.Active:=true;
  CheckBox1.Checked:=SQLQuery1.Active;
end;
Stammt aus einer kleinen Denksportaufgabe ;-)
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Alfred
Beiträge: 101
Registriert: Do 22. Nov 2007, 20:06
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: München

Beitrag von Alfred »

Hallo af01815;

:D

Bei mir mußte ich noch IBConnection1.Connected := false;
durch SQLTransaction1.commit ersetzen.

Die fbembed.dll darf man nicht umbenennen.

Folgendes würde mich noch interessieren:

1) Wie kommt man denn auf uses ibase60dyn?

2) Mit ibexpert oder flamerobin kann ich die *.fdb nur administrieren, wenn ein localer
Server läuft.

Gruß
Alfred

monta
Lazarusforum e. V.
Beiträge: 2809
Registriert: Sa 9. Sep 2006, 18:05
OS, Lazarus, FPC: Linux (L trunk FPC trunk)
CPU-Target: 64Bit
Wohnort: Dresden
Kontaktdaten:

Beitrag von monta »

IBExpert geht auch mit nem embedded-Server. Dazu musst du allerdings bei der Datenbankregistrierung den konkreten Pfad zur DLL eingeben. Und ein entscheidender Nachteil ist, das nur ein User dann zugreifen kann, also entweder Programm oder IBExpert.
Johannes

Alfred
Beiträge: 101
Registriert: Do 22. Nov 2007, 20:06
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: München

Beitrag von Alfred »

Hallo Monta,

es funktioniert, wenn man das Verzeichnis \intl in das IBExpert-Verzeichnis kopiert :).

Wenn man fbembed.dll, icudt30.dll, icuin30.dll, icuuc30.dll und ib_util.dll
in das Verzeichnis windows\system32 kopiert, vermeidet man beim 2. Aufruf die Fehlermeldung "icuuc30.dll nicht gefunden".

Gruß
Alfred

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6766
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Beitrag von af0815 »

Alfred hat geschrieben:Hallo af01815;

:D
Folgendes würde mich noch interessieren:

1) Wie kommt man denn auf uses ibase60dyn?
Source & Forum lesen ist ein Weg.

Was oft auch hilft: Rechte Maustaste + "Suche Deklaration", und zu probieren den Code zu verstehen. In diesem Fall habe ich ganz einfach gesucht, wo die dlls geladen werden.

Weiter hat auch schon Christian dazu was geschrieben.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Antworten