Anlegen einer DB in Zeos

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
Christian
Lazarusforum e. V.
Beiträge: 6092
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Anlegen einer DB in Zeos

Beitrag von Christian »

Hi,

Wollt es den Nutzern mal etwas einfacher machen und die Db anlegen wenn nicht existent.
Bekomm das aber für Firebird mit aktuellem zeos SVN nicht hin.

SQL Error: invalid database handle (no active connection). Error Code: -904. Unsuccessful execution caused by an unavailable resource. The SQL: CREATE DATABASE 'test2' USER 'SYSDBA' PASSWORD '**************' PAGE_SIZE 4096 DEFAULT CHARACTER SET UTF8;

Im Spiel ist nur eine TZConnection mit Protocol,Database,Hostname gesetzt. Und CreateNewDatabase=... in Params.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

MmVisual
Beiträge: 1127
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winux (L 1.6 FPC 3)
CPU-Target: 32/64Bit

Re: Anlegen einer DB in Zeos

Beitrag von MmVisual »

Vermutlich musst Du dich mit einer System-DB verbinden, dann kannst Du den SQL Befehl für Create Databse ausführen und dann dich mit der neuen Database verbinden und die Tabellen anlegen.

Demos und nützliche Links hier:
viewtopic.php?f=17&t=5875&hilit=zeos#p53706

Christian
Lazarusforum e. V.
Beiträge: 6092
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Re: Anlegen einer DB in Zeos

Beitrag von Christian »

Wo siehst du in dem Post was nützlichs für mein Problem ?
Ich erinnere mich grau das irgendwo mal jemand zusamengetragen hat (warscheinlich EgonHugeist) wie man Datenbanken auf verschiedenen DB Systemen anlegt.
Ich finds nur nicht mehr und hoffe er meldet sich zu dem Thema.
Wenns jemand sonst findet oder noch weiss ;)
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

MmVisual
Beiträge: 1127
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winux (L 1.6 FPC 3)
CPU-Target: 32/64Bit

Re: Anlegen einer DB in Zeos

Beitrag von MmVisual »

Diese Zeile aus dem Post:

- Mit Zeos 6.6.6 konnte man eine Datenbank anlegen, mit Zeos 7 geht das auch, hier der Workaround:
http://zeos.firmos.at/viewtopic.php?t=3485

Im Link von ISM gibt es sogar ein Demo-Codeschnipsel.
Ich hatte auch mal das Problem, nur nutze ich kein Firebird. Zumindest zeit es den Lösungsweg, danach kannst Du suchen.

EgonHugeist hat jetzt keine Zeit mehr, er ist die nächsten Monate stark mit wichtigeren Dingen beschäftigt/eingebunden.

Christian
Lazarusforum e. V.
Beiträge: 6092
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Re: Anlegen einer DB in Zeos

Beitrag von Christian »

Da wars was ich gemeint hatte :)
Mein Firebirs Problem war aber das ich den Server nicht angegeben hatte,
CREATE DATABASE 'Serverx:test2' USER 'SYSDBA' PASSWORD '**************' PAGE_SIZE 4096 DEFAULT CHARACTER SET UTF8;
wirft zwar eine Exception beim ersten öffnen beim 2. ist die DB dann aber tatsächlich angelegt und die Connection kann geöffnet werden
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Christian
Lazarusforum e. V.
Beiträge: 6092
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Re: Anlegen einer DB in Zeos

Beitrag von Christian »

Für Postgres gehts übrigends nicht auch nicht mit korrektem SQL ;) Aber man kann dort auf DB "postgres" verbinden und dann mit Connection.ExecuteDirect die DB anlegen.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

EgonHugeist
Beiträge: 92
Registriert: Di 17. Apr 2012, 22:41

Re: Anlegen einer DB in Zeos

Beitrag von EgonHugeist »

Hi Christian,

Nun will ich dir auch noch meinen Senf dazu geben (;
Eigentlich hat Markus dir schon gezeigt, wie man sich mit den SystemDatenbanken verbindet. Leider werden diese bei FireBird erst mit anlegen der db erstellt. Somit ist das eine Sackgasse. Ich muss erstmal in den Quellen nachschauen, doch meine ich mich zu erinnern, dass es da eine TZConnection.Properties Value gibt ?CreateDataBase=True? welche dann in die Datenbank, welche du in den TZConnection props angegeben hast, anlegt. Die wirst die richtige Syntax in unit ZDbcInterbase.pas procedure xx.open finden. Schau da mal rein. Ich hab das noch nie getestet, sollte aber funktionieren. Dennoch für alle anderen unterstützen Treiber ist die Variante von Markus die sicherere.

Gruß Michael
ZeosDevTeam

Christian
Lazarusforum e. V.
Beiträge: 6092
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Re: Anlegen einer DB in Zeos

Beitrag von Christian »

Hallo Michael,

vorab erstmal danke für deine grossartige Arbeit an Zeos.
Ich hab alles was ich an Doku und Forenbeiträgen fidnen konnte durchgeschaut. Auch aus dem Source bin ich nicht wirklich schlau geworden.
Es wär an der Stelle einfach schön wenn das irgendwo mal stehen würde :)
Bei Postgres hat das aber alles nicht geklappt, auch nicht mit verbinden auf "postgres". Manuell bin ich d dann aber weitergekommen.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

MmVisual
Beiträge: 1127
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winux (L 1.6 FPC 3)
CPU-Target: 32/64Bit

Re: Anlegen einer DB in Zeos

Beitrag von MmVisual »

> Bei Postgres hat das aber alles nicht geklappt, auch nicht mit verbinden auf "postgres". Manuell bin ich d dann aber weitergekommen.

Bei mir hat das geklappt. Ich habe das mit Michael mal an einem langen Abend zusammen ausgeknobelt.

Kannst Du das näher beschreiben, warum es nicht ging oder was da bei Dir nötig war?

Gruß Markus

Christian
Lazarusforum e. V.
Beiträge: 6092
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Re: Anlegen einer DB in Zeos

Beitrag von Christian »

Nö müsst ich erst wieder ausknobeln, hast du deine lösung noch da ? Ansonsten schau ich nochmal wies nicht funktioniert hatte
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

MmVisual
Beiträge: 1127
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winux (L 1.6 FPC 3)
CPU-Target: 32/64Bit

Re: Anlegen einer DB in Zeos

Beitrag von MmVisual »

Code: Alles auswählen

dbTest.Disconnect;
dbTest.Protocol := cboProtocol.Text;
dbTest.HostName := edHost.Text;
dbTest.Port := StrToIntDef(edPort.Text, 0);
dbTest.Database := '';
dbTest.User := edUser.Text;
dbTest.Password := edPasswort.Text;
dbTest.Database := 'postgres';
dbTest.Catalog := dbTest.Database;
q.SQL.Text := 'CREATE DATABASE ' + edDatabase.Text;
q.SQL.Add(' WITH ENCODING=''UTF8''');
q.ExecSQL;


Damit ging es.

Christian
Lazarusforum e. V.
Beiträge: 6092
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Re: Anlegen einer DB in Zeos

Beitrag von Christian »

So mach ichs doch jetzt auch das ist doch aber nich der zeos weg
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

MmVisual
Beiträge: 1127
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winux (L 1.6 FPC 3)
CPU-Target: 32/64Bit

Re: Anlegen einer DB in Zeos

Beitrag von MmVisual »

Was wäre denn der Zeos-Weg?

Christian
Lazarusforum e. V.
Beiträge: 6092
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Re: Anlegen einer DB in Zeos

Beitrag von Christian »

Na über createdatabase in den properties
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

EgonHugeist
Beiträge: 92
Registriert: Di 17. Apr 2012, 22:41

Re: Anlegen einer DB in Zeos

Beitrag von EgonHugeist »

Hab gerade mal in die Quellen geschaut in die SIGDEV gefixt...

Richtig wär TZConnection.Properties.Values['CreateNewDatabase'] := 'CREATE DATABASE '#39+C:\MeineDB.fdb'+#39+' USERNAME = ..........
Also quasi den gesamten string zusammenbaste, welch nötig ist, um eine FireBird DB anzulegen.

Außerdem hab ich gesehen, das dieser syntax wohl für alle DBMS zur Verfügung stand, wohl aber wieder entfernt wurde. Warum, weiß ich jetzt nicht, aber es wird nix ohne guten Grund entfernt..

Christian die Exception ist gefixt: R1846 \testing


Generell wäre es toll, wenn ihr mir ne PM übers Zeos-Forum schreibt, da ich hier nur gelegentlich aus reiner Neugier rumschnüffel -> work overload :wink:

Michael
ZeosDevTeam

Antworten