Tabellen einer mysql Datenbank mit ZSQLConnection abfragen

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
Antworten
ralli
Beiträge: 374
Registriert: Mi 13. Sep 2006, 15:57
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Hagen a.T.W.
Kontaktdaten:

Tabellen einer mysql Datenbank mit ZSQLConnection abfragen

Beitrag von ralli »

In Listboxt1 werden nach erfolgreicher Verbindung mit dem mysql Server alle Datenbanken angezeigt.Dies funktioniert auch. Nach einem Doppelklick eines Eintrages in der Listbox1 sollen dann in der Listbox2 alle Tabellen dieser Datenbank angezeigt werden.
dies funktioniert:

Code: Alles auswählen

 
ListBox2.Clear;
Datenbank.GetTableNames('','briefe',ListBox2.Items);
 
Aber das ist ja nur ein Test. Natürlich soll er alle Tabellen einer ausgewählten Datenbank dynamisch anzeigen. Und dies funktioniert nicht.

Code: Alles auswählen

 
var db : string;
begin
db := ListBox1.GetSelectedText;
ListBox2.Clear;
Datenbank.GetTableNames('',db,ListBox2.Items);
 
Er bricht mit der Fehlermeldung ab: SQL Error: incorrect database name 'briefe
obwohl doch vorher die Datenbank bestimmt wurde, aus der er die Tabellen anzeigen soll
Pentium 4 - 2GB - Debian Lenny - Gnome 2.22.3 - Nvidia 8600 GT - FPC 2.2.2 - Lazarus 0.9.26 - GTK2

Christian
Beiträge: 6079
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: Tabellen einer mysql Datenbank mit ZSQLConnection abfragen

Beitrag von Christian »

hast du gesehn das da ein ' davorsteht ? Steht das wirklich davor ?
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

ralli
Beiträge: 374
Registriert: Mi 13. Sep 2006, 15:57
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Hagen a.T.W.
Kontaktdaten:

Re: Tabellen einer mysql Datenbank mit ZSQLConnection abfragen

Beitrag von ralli »

Ja Christian, das steht wirklich davor, ich stehe vor einem Rätsel.
Pentium 4 - 2GB - Debian Lenny - Gnome 2.22.3 - Nvidia 8600 GT - FPC 2.2.2 - Lazarus 0.9.26 - GTK2

Christian
Beiträge: 6079
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: Tabellen einer mysql Datenbank mit ZSQLConnection abfragen

Beitrag von Christian »

das erklärt ja dann warum ers nicht findet. das muss ja irgendwie in deine variable kommen...
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

ralli
Beiträge: 374
Registriert: Mi 13. Sep 2006, 15:57
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Hagen a.T.W.
Kontaktdaten:

Re: Tabellen einer mysql Datenbank mit ZSQLConnection abfragen

Beitrag von ralli »

Aber wenn ich ShowMessage(db) davor schiebe, zeigt er ja den richtigen Inhalt an, also ohne ' davor. Da ist was oberfaul, aber was ?
Pentium 4 - 2GB - Debian Lenny - Gnome 2.22.3 - Nvidia 8600 GT - FPC 2.2.2 - Lazarus 0.9.26 - GTK2

knight
Beiträge: 802
Registriert: Mi 13. Sep 2006, 22:30

Re: Tabellen einer mysql Datenbank mit ZSQLConnection abfragen

Beitrag von knight »

Welche Datenbankkomponente wird denn verwendet? Bei mir gibt es keine ZSQLConnection (nur ZConnection und die kennt keine Methode GetTableNames).

knight

ralli
Beiträge: 374
Registriert: Mi 13. Sep 2006, 15:57
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Hagen a.T.W.
Kontaktdaten:

Re: Tabellen einer mysql Datenbank mit ZSQLConnection abfragen

Beitrag von ralli »

Es muss natürlich TZConnection heissen, ich pflege immer meinen Quellcode lesbar zu halten, deshalb heisst diese Zeos Komponente bei mir im Sourcecode immer Datenbank und die TZQuery Abfrage. Bei Deiner Erfahrung wusstest Du bestimmt, das hier ein Schreibfehler vorliegt, oder ? Und natürlich gibt es die Methode GetTableNames. Es ist die Zeoslib Version ZEOSDBO-6.6.3-stable, die zum Einsatz kommt. Es tut mir leid, nach vielen Stunden Arbeit lässt die Konzentration ab und es hat sich ein Schreibfehler eingeschlichen.
Pentium 4 - 2GB - Debian Lenny - Gnome 2.22.3 - Nvidia 8600 GT - FPC 2.2.2 - Lazarus 0.9.26 - GTK2

ralli
Beiträge: 374
Registriert: Mi 13. Sep 2006, 15:57
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Hagen a.T.W.
Kontaktdaten:

Re: Tabellen einer mysql Datenbank mit ZSQLConnection abfragen

Beitrag von ralli »

Es scheint tatsächlich ein Bug in der Zeos Komponente TZConnection zu sein. Da ich aber flexibel bin, habe ich folgende Lösung implementiert:

Code: Alles auswählen

 
var db : string;
var sql: string;
begin
// Ermittel ausgewählte Datenbank
db := ListBox1.GetSelectedText;
ListBox2.Clear;
// Abfragestring aufbereiten
sql := 'show tables ' + 'from ' + db + ';';
// Eine Datenbank wurde ausgewählt, fragen wir die Tabellen darin ab
   if ListBox1.ItemIndex <> -1 then begin
     with Listbox1 do
     Abfrage.SQL.Text := sql;;
     Abfrage.Open;
     while not Abfrage.EOF do begin
       ListBox2.Items.Add(Abfrage.Fields[0].AsString);
       Abfrage.Next;
     end;
     Abfrage.Close;
     end;
 
Geht doch, oder ? Ja, früh morgends bin ich eben ausgeruhter! :D
Pentium 4 - 2GB - Debian Lenny - Gnome 2.22.3 - Nvidia 8600 GT - FPC 2.2.2 - Lazarus 0.9.26 - GTK2

knight
Beiträge: 802
Registriert: Mi 13. Sep 2006, 22:30

Re: Tabellen einer mysql Datenbank mit ZSQLConnection abfragen

Beitrag von knight »

Ich hatte versucht, das Problem bei mir nachzuvollziehen. Daß ein Schreibfehler vorliegt, war für mich nicht offensichtlich (der falsche Name klingt recht glaubhaft). Da ich Zeos 7 (SVN) verwende lag es für mich durchaus im Bereich des möglichen, daß in der neuen Version Änderungen an den Komponenten vorgenommen wurden.
Grundsätzlich ist es immer problematisch, wenn im Datenbankbereich Zeichenketten zugewiesen werden, die Zeichen enthalten, die bei SQL als Trennzeichen dienen können. Die von dir gewählte Lösung (sql:=...) hätte ich auch als erste Alternative vorgeschlagen (einmal '+' kann da übrigens noch eingespart werden).

knight

ralli
Beiträge: 374
Registriert: Mi 13. Sep 2006, 15:57
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Hagen a.T.W.
Kontaktdaten:

Re: Tabellen einer mysql Datenbank mit ZSQLConnection abfragen

Beitrag von ralli »

Es ist definitiv Lazarus, wenn ich nach erfolgreicher Verbindung mit dem Datenbankserver den Inhalt der Stringvariablen db in der Statuszeile als Simpletext ausgebe, dann schmiert er da am Ende statt eines ' ein komisches Grafikzeichen rein. Möglicherweise ein Konflikt zwischen den Zeichensätzen ? Und ehrlich gesagt, glaube ich auch an keinen Bug in der Zeos Kompo.
Pentium 4 - 2GB - Debian Lenny - Gnome 2.22.3 - Nvidia 8600 GT - FPC 2.2.2 - Lazarus 0.9.26 - GTK2

Christian
Beiträge: 6079
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: Tabellen einer mysql Datenbank mit ZSQLConnection abfragen

Beitrag von Christian »

Warum glaubst du an keinen Bug in ZeOS ?
Dann hast du aber nch keine richtigen Erfahrungen damit gemacht...
ZeOS ist gut aber bei weitem nicht bugfrei.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Antworten