Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi MySQL-Rückantwort empfangen (https://www.delphipraxis.net/30598-mysql-rueckantwort-empfangen.html)

HaCkAttaCk2001 26. Sep 2004 22:44


MySQL-Rückantwort empfangen
 
Hi @ all.

Ich versuche gerade eine Rückantwort von MySQL zu bekommen, aber ich weiß nicht wie ich sie von meinem Programm auslesen lasse.

Delphi-Quellcode:
  qrMain.SQL.Text:='SELECT COUNT( * ) FROM `users` WHERE `name` =`'+Label12.Caption+'`';
  qrMain.Open;
Damit führe ich den Befehl aus. qrMain ist eine TZMySQLquery-Komponente, und Label12.Caption ist ein Username. Nun hab ich das Problem, dass ich das Ergebnis nicht mit
Delphi-Quellcode:
qrMain.FieldByName('id').AsString;
oder ähnlichem abfragen kann. Wie bekomme ich nun heraus, ob der Count 1 oder 0 ist (sind die einzigen Werte in diesem Fall die das ganze annehmen kann)?


C ya.

PS: Die Komponente stammt aus der ZeosDBO-Komponenten-Sammlung.

Jelly 26. Sep 2004 22:52

Re: MySQL-Rückantwort empfangen
 
Probiers mal mit folgender Query:
Delphi-Quellcode:
  qrMain.SQL.Text:='SELECT COUNT (*) as id FROM `users` WHERE `name` =`'+Label12.Caption+'`';

Robert_G 26. Sep 2004 23:13

Re: MySQL-Rückantwort empfangen
 
2 kleine Anmerkungen:
  • 1.
    SQL-Code:
    qrMain.SQL.Text:='SELECT COUNT (*) as id FROM `users` WHERE `name` =`'+Label12.Caption+'`';
    Warum baust du einen "´" für jeden Identifier ein?
    Such mal hier in der DP unter Datenbanken nach Hier im Forum suchenparameter and sql or Stringbasteleien.
    Da dürftest du genügend Infos über die Verwendung von Parametern finden. ;)
  • 2.
    Delphi-Quellcode:
    qrMain.FieldByName('id').AsString;
    du könntest doch genausogut
    Delphi-Quellcode:
    qrMain.Fields[0].AsInteger;
    verwenden. ;) Dann musst du auch nicht unbedingt ein Alias für die Spalte setzen.

Edit: "Firlds" -> "Fields"

Jelly 26. Sep 2004 23:20

Re: MySQL-Rückantwort empfangen
 
Zitat:

Zitat von Robert_G
Warum baust du einen "´" für jeden Identifier ein?

Ist bei Tabellennamen mit z.B. Leerzeichen auf jeden Fall notwendig. Bei einfachen Tabellenamen natürlich kein Muss.

Robert_G 26. Sep 2004 23:23

Re: MySQL-Rückantwort empfangen
 
Zitat:

Zitat von Jelly
Zitat:

Zitat von Robert_G
Warum baust du einen "´" für jeden Identifier ein?

Ist bei Tabellennamen mit z.B. Leerzeichen auf jeden Fall notwendig. Bei einfachen Tabellenamen natürlich kein Muss.

Das meine ich ja. ;)

HaCkAttaCk2001 27. Sep 2004 05:44

Re: MySQL-Rückantwort empfangen
 
Hi.

Erstmal danke für eure zahlreichen Antworten.

Ich werd erstmal das mit den Fields probieren... Die `` setz ich immer, weil mir phpMyAdmin das immer so angezeigt hat, und da ich nie genau weiß, ob etwas, das ich einsetzen möchte (hier halt der Username) Leerzeichen enthält, schreib ich die `` lieber immer mit :) .

THX erstmal.

C ya.

HaCkAttaCk2001 27. Sep 2004 15:39

Re: MySQL-Rückantwort empfangen
 
Hi.

Jetzt hab ich 'n Problem... erstmal war der Code oben ein wenig falsch, ich hab nämlich bei dem Label12.Caption `` herumgesetzt... es müssen aber ' ' sein. Nun könnt ihr euch mein Problem schon denken... Delphi denkt bei den Hochkommata an Strings und somit wird der ganze Code falsch. Wie krieg ich das bei Delphi hin das der die ' nicht als Stringeinleitung interpretiert?


C ya.

Igotcha 27. Sep 2004 15:43

Re: MySQL-Rückantwort empfangen
 
Zitat:

Zitat von Robert_G
Delphi-Quellcode:
qrMain.FieldByName('id').AsString;
du könntest doch genausogut
Delphi-Quellcode:
qrMain.Fields[0].AsInteger;
verwenden. ;) Dann musst du auch nicht unbedingt ein Alias für die Spalte setzen.

Das ist schon sehr sinnvoll ;-)

Hast Du schon einmal während der Entwicklung die Struktur der Datenbank angepasst - also z.B. Spalten in einer Tabelle hinzugefügt oder gelöscht?

Das macht nämlich viel Spaß, wenn man auf die Ergebnisse mit dem o.g. Statement direkt zugreift - bei Verwendung der Spaltenbezeichnung brauchst Du diesen Code überhaupt nicht anfassen.

Gruß Igotcha

Jelly 28. Sep 2004 08:14

Re: MySQL-Rückantwort empfangen
 
Zitat:

Zitat von Igotcha
Das ist schon sehr sinnvoll ;-)

Beides macht je nach Fall Sinn. Gegenbeispiel:
SQL-Code:
show tables
in MySQL liefert dir die Tabellennamen einer Datenbank, mit einer einzigen Spalte. Nur hat diese Spalte keinen festen Namen, sondern ist abhängig davon, mit welcher DB connected ist. Da bevorzug ich
Delphi-Quellcode:
query.Fields[0].AsString ;
Auch, wenn du sämtliche Felder einer Tabelle durchlaufen willst in einer for-Schleife ist 2. Methode vorzuziehen.

Greife ich jedoch ganz normal auf feste Spalten einer Query zu, benutze ich immer
Delphi-Quellcode:
FieldByName('Spalte').As??? ;
Gruß,

Robert_G 28. Sep 2004 08:44

Re: MySQL-Rückantwort empfangen
 
Ma darf dabei nicht vergessen, dass ein "Index by string" sacklangsam ist. Schließlich muss eine Collection durchlaufen werden und nur duch string-Vergleiche wird der richtige Index gefunden. ;)
Sowas ist vertretbar für die ParameterCollection (wird ja nur einmal vor dem Start der Query verwendet) oder in dem Fall hier, wenn nur ein Datensatz ausgespuckt wird.
Bei 1,000 DS ist das eine Handbremse. IMHO ist es eigentlich genauso so ein Newbie-Kram wie FindComponent.
Ich weiß, ich bin ein DB-speed-junky (musste trotzdem raus)


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:21 Uhr.
Seite 1 von 2  1 2      

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