AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi MySQL-Rückantwort empfangen

MySQL-Rückantwort empfangen

Ein Thema von HaCkAttaCk2001 · begonnen am 26. Sep 2004 · letzter Beitrag vom 28. Sep 2004
Antwort Antwort
Seite 1 von 2  1 2   
Benutzerbild von HaCkAttaCk2001
HaCkAttaCk2001

Registriert seit: 4. Nov 2003
Ort: Chemnitz
95 Beiträge
 
#1

MySQL-Rückantwort empfangen

  Alt 26. Sep 2004, 23:44
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 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.
Support bacteria! They are the only culture some people have...
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#2

Re: MySQL-Rückantwort empfangen

  Alt 26. Sep 2004, 23:52
Probiers mal mit folgender Query:
  qrMain.SQL.Text:='SELECT COUNT (*) as id FROM `users` WHERE `name` =`'+Label12.Caption+'`';
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#3

Re: MySQL-Rückantwort empfangen

  Alt 27. Sep 2004, 00:13
2 kleine Anmerkungen:
  • 1.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.qrMain.FieldByName('id').AsString; du könntest doch genausogut qrMain.Fields[0].AsInteger; verwenden. Dann musst du auch nicht unbedingt ein Alias für die Spalte setzen.

Edit: "Firlds" -> "Fields"
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#4

Re: MySQL-Rückantwort empfangen

  Alt 27. Sep 2004, 00:20
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.
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#5

Re: MySQL-Rückantwort empfangen

  Alt 27. Sep 2004, 00:23
Zitat von Jelly:
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.
  Mit Zitat antworten Zitat
Benutzerbild von HaCkAttaCk2001
HaCkAttaCk2001

Registriert seit: 4. Nov 2003
Ort: Chemnitz
95 Beiträge
 
#6

Re: MySQL-Rückantwort empfangen

  Alt 27. Sep 2004, 06:44
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.
Support bacteria! They are the only culture some people have...
  Mit Zitat antworten Zitat
Benutzerbild von HaCkAttaCk2001
HaCkAttaCk2001

Registriert seit: 4. Nov 2003
Ort: Chemnitz
95 Beiträge
 
#7

Re: MySQL-Rückantwort empfangen

  Alt 27. Sep 2004, 16:39
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.
Support bacteria! They are the only culture some people have...
  Mit Zitat antworten Zitat
Igotcha

Registriert seit: 22. Dez 2003
544 Beiträge
 
Delphi 2006 Professional
 
#8

Re: MySQL-Rückantwort empfangen

  Alt 27. Sep 2004, 16:43
Zitat von Robert_G:
qrMain.FieldByName('id').AsString; du könntest doch genausogut 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
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#9

Re: MySQL-Rückantwort empfangen

  Alt 28. Sep 2004, 09:14
Zitat von Igotcha:
Das ist schon sehr sinnvoll
Beides macht je nach Fall Sinn. Gegenbeispiel:
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
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 FieldByName('Spalte').As??? ; Gruß,
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#10

Re: MySQL-Rückantwort empfangen

  Alt 28. Sep 2004, 09:44
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)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:31 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