Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Database Components (https://www.delphipraxis.net/161003-database-components.html)

DArc 12. Jun 2011 01:05

Delphi-Version: 7

Database Components
 
Hey Delphianer!

Ich habe ein Problem mit den Zeos Komponenten, undzwar kann ich mit diesem Code

Delphi-Quellcode:
  Form1.ZConnection1.HostName := 'localhost';
  Form1.ZConnection1.Protocol := 'mysql';
  Form1.ZConnection1.Port := StrToInt('3306');
  Form1.ZConnection1.User := 'root';
  Form1.ZConnection1.Password := '';
  Form1.ZConnection1.Connect;
  Form1.ZQuery1.SQL.Text := 'SHOW DATABASES';
  Form1.ZQuery1.Open;
  ShowMessage(ZQuery1.FieldByName('Database').AsString);
die Datenbanken nicht anzeigen ... ich bekomme lediglich als Result eine "0".
Ich habe die Zeos Components auch mit einem TDBGrid verbunden. Beim TDBGrid
werden alle Datenbanken aufgezählt. Die Anzahl der Datenbanken ist richtig,
jedoch bekomme ich als Result für jede Reihe im TDBGrid eine "0".

Nun mein Problem:
Ich will die Namen der Datenbanken angezeigt bekommen.
Gibt es als Alternative irgendwelche anderen NEUEREN Komponenten?

Mfg DArc

haentschman 12. Jun 2011 18:45

AW: Database Components
 
Hallo...

wenn das DBGrid die Daten anzeigt sind sie auch im Dataset.
Zitat:

jedoch bekomme ich als Result für jede Reihe im TDBGrid eine "0".
was meinst du damit ?

DArc 12. Jun 2011 20:15

AW: Database Components
 
naja show database sollte doch die namen der datenbanken wiedergeben,
ich bekomme lediglich eine 0

Ich habe kurz ne PHP Variante geschrieben
Code:
<?php

mysql_connect("","root","");
$res = mysql_query("SHOW DATABASES");
while ($row = mysql_fetch_row($res))
{
    echo $row[0],"<br/>";
}

?>
Das Ergebnis ist
Zitat:

information_schema
cdcol
forum
mario
mo
mysql
phpmyadmin
storagedatr
test
trast
Das möchte ich auch in Delphi erreichen.
Wobei mir fällt grad auf, dass man vllt wie bei PHP ein array einbinden müsste
(echo $row[0],"<br/>";) weiß aber nicht wie das mit Zeos funktionieren soll:shock:

Mfg DArc

DeddyH 12. Jun 2011 21:26

AW: Database Components
 
Delphi-Quellcode:
Form1.ZConnection1.HostName := 'localhost';
  Form1.ZConnection1.Protocol := 'mysql';
  Form1.ZConnection1.Port := 3306; //wozu das String-Geraffel?
  Form1.ZConnection1.User := 'root';
  Form1.ZConnection1.Password := '';
  Form1.ZConnection1.Connect;
  Form1.ZQuery1.SQL.Text := 'SHOW DATABASES';
  Form1.ZQuery1.Open;
  while not Form1.ZQuery1.EOF do
    begin
      ShowMessage(Form1.ZQuery1.Fields[0].AsString);
      Form1.ZQuery1.Next;
    end;

DArc 12. Jun 2011 21:44

AW: Database Components
 
dieses geraffel tu ich normal nicht, hab da normal das stehen, musste es aber ersetzen, da es lästig war immer wieder einzugeben
Delphi-Quellcode:
Form1.ZConnection1.Port := StrToInt(edtx.Text);
bei mir kommt trotzdem 0 raus

Code:
---------------------------
Project1
---------------------------
0
---------------------------
OK  
---------------------------
kann das pls wer compilen, testen und berichten, obs bei ihm geht?

omata 12. Jun 2011 21:47

AW: Database Components
 
Warum eigentlich so spezialisiert?

Delphi-Quellcode:
var Liste:TStringList;
    i:integer;
begin
  Liste:=TStringList.Create;
  try
    ZConnection.GetTableNames('', Liste);
    for i:=1 to Liste.Count do
      ShowMessage(Liste[i-1]);
  finally
    Liste.free;
  end;
end;
Ok, wer lesen kann ist klar im Vorteil, sorry...

DeddyH 13. Jun 2011 00:00

AW: Database Components
 
Mal ganz doof gefragt: die Query ist aber mit der Connection verbunden, oder?

haentschman 13. Jun 2011 06:41

AW: Database Components
 
Moin...
ich zitiere nochmal weil ja keiner drauf hört :zwinker:
Zitat:

Ich habe die Zeos Components auch mit einem TDBGrid verbunden. Beim TDBGrid
werden alle Datenbanken aufgezählt. Die Anzahl der Datenbanken ist richtig,
jedoch bekomme ich als Result für jede Reihe im TDBGrid eine "0".
...dieser Aussage zufolge ist das kein DB oder Verbindungsproblem sondern ein "Auswertungsproblem" des Datasets.

Zitat:

ich bekomme lediglich eine 0
...wo holst du die 0 her und wie visualisierst du sie ?

DArc 13. Jun 2011 10:49

AW: Database Components
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hab mal das Beispiel Projekt hochgeladen.
Ich möchte alle Datenbanken angezeigt bekommen, die Anzahl stimmt, nur die Namen sind falsch.

Achja, um das Beispiel nachzuvollziehen braucht ihr lediglich einen MySQL Server mit ein paar Datenbanken.

mkinzler 13. Jun 2011 10:50

AW: Database Components
 
Schon mal mit Omata's allgemeinen/db-unabhängigen Vorschlag versucht?

DArc 13. Jun 2011 11:00

AW: Database Components
 
ja, kriege da aber die tabellen namen und nicht den inhalt

mkinzler 13. Jun 2011 11:02

AW: Database Components
 
Mit
SQL-Code:
SHOW DATABASES
aber auch nicht

DArc 13. Jun 2011 11:10

AW: Database Components
 
klar, schau mal die erste Seite den PHP Script an

ich müsste halt nur das ergebnis in ein array reinladen und den ersten rausnehmen
Code:
echo $row[0],"<br/>";
so hab ichs auch schon versucht
Code:
ShowMessage(  ZQuery1.FieldByName('Database').AsString);
Anstatt AsString, hab ich Value, Text usw. probiert, kriege jedesmal "0" raus.

€dit: Ich will ja net unhöflich wirken, aber könnte mal bitte irgendjemand einfach das Beispiel Projekt ziehen oder selbst kurz ein
Programm mit den hier im Thread auftauchenden Codes erstellen und es einfach testen? BITTE!

Und nochwas: Ich hatte nie Schwierigkeiten Tabellen Inhalte anzuzeigen, verstehe also nicht wieso das nicht funktioniert, denn die Datenbanken sind
im Grunde auch in einer Tabelle, undzwar "Database" gespeichert, deswegen funktioniert das PHP Script ja auch

mkinzler 13. Jun 2011 11:16

AW: Database Components
 
Was meinst du mit Inhalt?
SQL-Code:
SHOW DATABASES
liefet dir eine Liste der Namen der Datenbanken des Servers und nicht deren Inhalt

DArc 13. Jun 2011 11:22

AW: Database Components
 
zum verständnis:

1. Ich möchte ja die Namen rausfinden, kriege aber bei jedem Code den ich benutzt habe, meinen eigenen und die der anderen, immer "0" zurück!
2. Sind die Datenbanken in einer Tabelle gespeichert:
Code:
+++++++++++++++
-   Database -
+++++++++++++++
    Name 1
    Name 2
    Name 3
    usw.
Es gibt nur eine Spalte soweit ich weiß, undzwar "Database" ... sollte man aber wissen, wenn man sql bzw php oft benutzt

omata 13. Jun 2011 11:37

AW: Database Components
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von DArc (Beitrag 1106073)
Hab mal das Beispiel Projekt hochgeladen.

Dein Beispiel funktioniert bei mir wunderbar.

DArc 13. Jun 2011 11:38

AW: Database Components
 
Kannst mal Dumpen, was für Ergebnisse da kommen?

Ich raff einfach nicht wieso das bei mir nicht funktioniert^^

mikhal 13. Jun 2011 11:39

AW: Database Components
 
Hast du überhaupt die Berechtigung "Show DataBases"?
Zitat:

13.5.4.7. SHOW DATABASES
SHOW {DATABASES | SCHEMAS} [LIKE 'pattern']

SHOW DATABASES listet die Datenbanken auf dem MySQL Server-Host auf. Sofern Sie nicht über die Berechtigung SHOW DATABASES verfügen, werden Ihnen nur diejenigen Datenbanken angezeigt, für die Sie Berechtigungen haben. Sie können diese Liste auch mit mysqlshow anzeigen.

Wurde der Server mit der Option --skip-show-database gestartet, dann können Sie diese Anweisung ohne die Berechtigung SHOW DATABASES überhaupt nicht verwenden.

SHOW SCHEMAS kann ebenfalls verwendet werden.


--------------------------------------------------------------------------------

Dies ist eine Übersetzung des MySQL-Referenzhandbuchs, das sich auf dev.mysql.com befindet. Das ursprüngliche Referenzhandbuch ist auf Englisch, und diese Übersetzung ist nicht notwendigerweise so aktuell wie die englische Ausgabe. Das vorliegende deutschsprachige Handbuch behandelt MySQL bis zur Version 5.1.
Mikhal

DArc 13. Jun 2011 11:41

AW: Database Components
 
Die Berechtigungen muss ich doch haben, weil das PHP Script funktioniert ...

mkinzler 13. Jun 2011 11:43

AW: Database Components
 
Nein nicht unbedingt. Da bei MYSQL die Nutzerrechte pro Rechner vergeben werden können. Läuft das Programm den auf dem selben Rechner?

Sir Rufo 13. Jun 2011 11:45

AW: Database Components
 
Zitat:

Zitat von mkinzler (Beitrag 1106095)
Nein nicht unbedingt. Da bei MYSQL die Nutzerrechte pro Rechner vergeben werden können. Läuft das Programm den auf dem selben Rechner?

sollte man aber wissen, wenn man sql bzw php oft benutzt :mrgreen:

DArc 13. Jun 2011 11:46

AW: Database Components
 
ja tut es, zum testen mach ich immer alles lokal aufm Rechner

An Sir Rufo: Beide laufen lokal, also sind die Rechte ja gleich oder nciht ;)

achja ich möchte hinzufügen, dass es mit der "MySQL ohne Komponenten" funktioniert, nur mit Zeos nicht :S

omata 13. Jun 2011 11:49

AW: Database Components
 
Hast du meinen Screenshot gesehen? Wie sieht deiner aus?

DArc 13. Jun 2011 11:54

AW: Database Components
 
Liste der Anhänge anzeigen (Anzahl: 1)
Da habs angehängt ...

€dit: Ich würde das ganze auch gern mit Passwort versuchen, aber
Code:
---------------------------
Project1
---------------------------
SQL Error: Client does not support authentication protocol requested by server; consider upgrading MySQL client.
---------------------------
OK  
---------------------------
Zeos veraltet? hmmm

Sir Rufo 13. Jun 2011 12:31

AW: Database Components
 
Such mal alle libmysql.DLL auf deinem Rechner und Vergleiche die Versionen.
Am besten natürlich, wenn die Version auch zum Server passt.

Alternativ kannst du auch eine aktuelle DLL in das Anwendungsverzeichnis des Testprogramms kopieren und nochmals testen.

DArc 13. Jun 2011 13:03

AW: Database Components
 
das ganze ist mir bissle zu blöd geworden, ich benutz einfach php scripts und lese das ergebnis aus, so hab ich auch kein problem mit
den ganzen versionen, die komische bedienung der zeos komponenten und an sich das veraltete zeos wo ich immer hinterher rennen muss usw.

und das mit den php scripts wäre auch optimal, da ich für mein produkt ein server mit apache / php / mysql brauche

mkinzler 13. Jun 2011 13:08

AW: Database Components
 
Der MySQL-Client hat aber nichts mit Zeos zu tun. Genausowenig ist die Ermittlung von vorhandenen Datenbanken eine Kernkompetenz von Datenbankzugriffskomponenten zudem diese Art der Ermittlung so nur bei mySQL geht und Zeos ja eine Komponentensammlung für mehrere DBMS ist.

DArc 13. Jun 2011 13:14

AW: Database Components
 
Zitat:

Zitat von mkinzler (Beitrag 1106124)
Der MySQL-Client hat aber nichts mit Zeos zu tun. Genausowenig ist die Ermittlung von vorhandenen Datenbanken eine Kernkompetenz von Datenbankzugriffskomponenten zudem diese Art der Ermittlung so nur bei mySQL geht und Zeos ja eine Komponentensammlung für mehrere DBMS ist.

das ist mir bewusst, aber im endeffekt muss ich mit zeos arbeiten und das gefällt mir einfach nicht so ganz und nach ner neuen dll zu suchen hab ich auch kein
nerv. außerdem ist doch ein php script viel einfacher zu bewältigen und bietet tolle features, ne gescheite dokumentation gibts auch (ne eigene hp die immer uptodate ist;) )
hinzukommt, dass ich mich in zeos einarbeiten muss, was aber in dem sinne sowieso sinnlos ist, weil mein produkt auch wie gesagt ein server braucht über den ein php
script laufen muss, wieso dann extra ne komponente für datenbankzugriffe? usw.

aber trotzdem danke für die hilfe^^


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:59 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