Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Firebird und ZEOS (https://www.delphipraxis.net/145938-firebird-und-zeos.html)

matashen 11. Jan 2010 07:19

Datenbank: Firebird • Version: 2 • Zugriff über: ZEOS

Firebird und ZEOS
 
Hi zusammen,

wie am Freitag schon versprochen die nächste DAU-Situation im Thema "Matashen will sich mit Datenbanken befassen"

Nachdem ich es dank eurer Hilfe geschafft habe ZEOS zu installieren, hab ich kurz ein Testprogramm gebaut, natürlich mit Codeschnippsel aus dem Internet, da ich die SQL-Befehle noch nicht verinnerlicht habe...

...also wies auch sein,
ich hab Firebird 2.0 lokal laufen, und verbinde dann mittels diesm Code.
Eine Datenbank ist bisher noch nicht angelegt.
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
   dbMain.Hostname:=edServer.Text; //Server
   dbMain.Database := 'd:\db1.fdb';
   dbMain.Protocol := 'firebird-1.5';
   dbMain.Properties.Add ('CreateNewDatabase=CREATE DATABASE ' +      QuotedStr ('d:\db1.fdb') + ' USER ' +      QuotedStr ('sysdba') + ' PASSWORD ' + QuotedStr ('masterkey') +      ' PAGE_SIZE 4096 DEFAULT CHARACTER SET ISO8859_1');
   dbMain.Connect;
  try
  finally
    dbMain.Connected:=False;
  end;
if dbmain.connected then label1.caption:='YES- connected';
end;
Nun schmeisst mir das ganze eine Exception:
SQL-Error cannot attach to password database

Firebird schreibt auch brav ins Logfile folgende Zeilen (Rechnerbezeichnung ersetzt durch MeinRechner)



Delphi-Quellcode:
MeinRechner(Server)   Mon Jan 11 08:16:32 2010
   WNET/wnet_error: CreateFile errno = 2


MeinRechner(Server)   Mon Jan 11 08:16:32 2010
   Unable to complete network request to host "Netzlaufwerk".


MeinRechner(Server)   Mon Jan 11 08:16:32 2010
   Failed to establish a connection.


MeinRechner(Server)   Mon Jan 11 08:16:32 2010
   Das System kann die angegebene Datei nicht finden.

So jetzt brauch ich ein paar Tips.

Bevor die Frage kommt, die Suche hab ich hier und beim goggerle schon benutzt.


Gruß Matthias

mirage228 11. Jan 2010 07:27

Re: Firebird und ZEOS
 
Morgen,

Du sagst Du verwendest Firebird 2.0? Versuchs mal mit dem dazugehörigen Protokoll von ZEOS:
Delphi-Quellcode:
dbMain.Protocol := 'firebird-2.0';
Viele Grüße

DelphiBandit 11. Jan 2010 07:43

Re: Firebird und ZEOS
 
Hallo,

ich hoffe ich deute das Firebird-Fehlerlog richtig. Du versuchst die Datenbank auf dem Server "Netzlaufwerk" zu erstellen, weil Dein Rechner heisst ja MeinRechner.

Dazu zwei Anmerkungen:

1.) Firebird kann keine Datenbanken auf fremden Rechnern über eine Netzwerk-Freigabe öffnen, sondern in diesem Fall muß auf der entfernten Maschine ebenfalls ein Firebird laufen. Der Pfad bzw. die Angabe der Datenbank ist immer aus der Sicht der lokalen Maschine anzugeben.

2.) Probier es mal auf Deinem eigenen Recher = localhost, bzw. den Hostnamen einfach leer lassen. Und dann einen Pfad zur Datenbank angeben, bei der die Platte und das Verzeichnis physikalisch auch vorhanden sind. Vorsicht bei Vista / Win7 - nicht unbedingt C:\db.fdb!

Gruß
HondaGL1

Zitat:

Zitat von matashen
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
   dbMain.Hostname:=edServer.Text; //Server
Nun schmeisst mir das ganze eine Exception:
Firebird schreibt auch brav ins Logfile folgende Zeilen (Rechnerbezeichnung ersetzt durch MeinRechner)

Delphi-Quellcode:
MeinRechner(Server)   Mon Jan 11 08:16:32 2010
   WNET/wnet_error: CreateFile errno = 2
MeinRechner(Server)   Mon Jan 11 08:16:32 2010
   Unable to complete network request to host "Netzlaufwerk".
MeinRechner(Server)   Mon Jan 11 08:16:32 2010
   Failed to establish a connection.
MeinRechner(Server)   Mon Jan 11 08:16:32 2010
   Das System kann die angegebene Datei nicht finden.


hoika 11. Jan 2010 07:49

Re: Firebird und ZEOS
 
Hallo,

Firebird ist also lokal auf deinem Rechner installiert ?

Dann sollte es so gehen.

Delphi-Quellcode:
dbMain.Database := 'localhost:d:\db1.fdb';
Ist Firebird auf einem anderen Rechner,
ersetzt man localhost entweder durch dessen

- DNS-Namen
- Rechner-Namen
- IP


Im Firebird-Verzeichnis steht übrigens eine aliases.conf.
Das ist eine normale Textdatei.

Schreibt man dort z.B. rein

mydb = d:\db1.fdb

kann man dann so schreiben

Delphi-Quellcode:
dbMain.Database := 'localhost:mydb';

Heiko

matashen 11. Jan 2010 08:52

Re: Firebird und ZEOS
 
Liste der Anhänge anzeigen (Anzahl: 1)
Danke erstmal für die Feedbacks,

hab hier noch eine Frage zu dem Punkt


Zitat:

1.) Firebird kann keine Datenbanken auf fremden Rechnern über eine Netzwerk-Freigabe öffnen, sondern in diesem Fall muß auf der entfernten Maschine ebenfalls ein Firebird laufen. Der Pfad bzw. die Angabe der Datenbank ist immer aus der Sicht der lokalen Maschine anzugeben.
Bei mir liegt die Firebirdanwednung auf einem Netzlaufwerk. Die Datenbank die ich anlegen möchte sollte lokal auf D:(zweite Partition meiner Platte) angelegt werden.
Es wäre für mich aber eleganter die DB auf einem Netzlaufwerk anzulegen, da die Netzlaufwerke hier automatisch gesichert werden.

Als System läuft W2K, sollte also mit Zielort der DB keine Probleme geben.

Die Datenbank D:\db1.fdb existiert im üßbrigen noch nicht.
Diese wollte ich ja erstmal erstellen und dachte der Befehl

Delphi-Quellcode:
   dbMain.Properties.Add ('CreateNewDatabase=CREATE DATABASE ' +      QuotedStr ('d:\db1.fdb') + ' USER ' +      QuotedStr ('SYSDBA') + ' PASSWORD ' + QuotedStr ('masterkey') +      ' PAGE_SIZE 4096 DEFAULT CHARACTER SET ISO8859_1');
würde das machen.

Den Firebirdserver hab ich als Dienst installier nach dieser Anleitung
link zu dekphi-treff

Ich hab jetzt versucht als Server localhost einzutragen und die Zieldb auch in aliases.conf

Die Exception wird im übrigen imme rnoch ausgelöst. Hab die mal als Bild angehängt.
Er sagt auch er könne die Message nicht mitlogen, er macht das aber trotzdem !?

Gruß Matthias

hoika 11. Jan 2010 09:08

Re: Firebird und ZEOS
 
Hallo,

schnapp dir ibexpert (personal), lege die DB damit an.

Nochmal zum Netzlaufwerk.

Die DB (db1.fdb) hat dort nix zu suchen !
Kann es sein, dass du Firebird auch nach installiert hast ?

Alles falsch ! ;)


Wenn es ums sichern geht, sollte eh ein Backup gemacht werden.

Eine geöffnete Word-Datei sichern wir ja auch nicht ...

Folgende 2 Zeilen erzeugen ein Backup + Restore
(gbak steht im Firebird-Verzeichnis, PATH drauf oder vollständigen Pfad angeben)
Die Data.fbk/Restore.fdb kommen dann auf das Netzlaufwerk,
wenn du willst per "geplante Vorgänge"

gbak -b data.fdb data.fbk -user sysdba -pass masterkey
gbak -c data.fbk restore.fdb -user sysdba -pass masterkey


Noch mal zum Mitschreiben.
Auf einem Netzlauferk hat eine Datenbank + Datenbank-Datei nichts zu suchen.


Heiko

DelphiBandit 11. Jan 2010 09:15

Re: Firebird und ZEOS
 
Würde Dir im ersten Schritt raten Dir FlameRobin bei sourceforge zu besorgen. Oder wie hoika schrieb den IBExpert (volle Version kostet allerdings). Dann kannst Du Deine Datenbank erstmal damit anlegen, damit Du eine Startgrundlage hast.

Datenbanken können durchaus auf Netzlaufwerken liegen, aber dort nicht mit dem Firebird von Deiner Maschine angesprochen werden! Auf der Maschine, welche die Netzlaufwerke zur Verfügung steht muß dann ebenfalls ein Firebird installiert sein. Als Hostname wird dann der Name dieser Maschine verwendet und die Angabe der Datenbank wiegesagt aus lokaler Sicht des Servers!! (wichtig!!)

Server MEINSERVER hat D:\ freigegeben als Daten -> Client verbindet diese Freigabe als U:\ ->
Ansprache der Datenbank mit MEINSERVER:D:\db.fdb.

Alle Clients, welche die Datenbank auf dem entfernten Server ansprechen wollen, brauchen lediglich die Client-Installation (siehe hierzu im bin-Verzeichnis von Firebird instclient). Wenn Du auf Deiner Maschine allerdings programmierst etc. dann würde ich den Server auch dort installieren.

matashen 11. Jan 2010 10:13

Re: Firebird und ZEOS
 
Ich hab jetzt mal meinen FBServer auf D: umgesiedelt, und wenn ich mit localhost:3051 (mein Port) verbinde, dann erstellt er mir sogar die Datenbankdatei.

Flamerobin hab ich auch runtergeladen.
Flamerobin bringt mir aber einen Fehler wenn ich auf Firebird zugreifen will.

Ich werd jetzt mal gucken in der db nen Datensatz zu erstellen.

Die nächste DAU Frage kommt bestimmt.

Gruß Matthias

DelphiBandit 11. Jan 2010 10:55

Re: Firebird und ZEOS
 
Zitat:

Zitat von matashen
Flamerobin hab ich auch runtergeladen.
Flamerobin bringt mir aber einen Fehler wenn ich auf Firebird zugreifen will.

Nö, eigentlich mal eher nicht. Das Tool ist extra für Firebird geschrieben :) Als erstes den Host (Register server) bekannt machen, dann dort eine Datenbank (Register existing database) anlegen. Jeweils im Kontextmenü zu finden. Korrekte Anmeldedaten und Pfade vorausgesetzt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:49 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz