AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Sql Befehle mit Parametern absetzen
Thema durchsuchen
Ansicht
Themen-Optionen

Sql Befehle mit Parametern absetzen

Ein Thema von badrulecracker · begonnen am 18. Mär 2005 · letzter Beitrag vom 18. Mär 2005
Antwort Antwort
Seite 1 von 2  1 2      
badrulecracker

Registriert seit: 9. Mär 2004
6 Beiträge
 
#1

Sql Befehle mit Parametern absetzen

  Alt 18. Mär 2005, 09:50
Datenbank: Mysql • Version: 4.0 • Zugriff über: ZeosLib
Hi,

ich habe mir nach einigen Schwierigkeiten die Zeos Komponente installieren können. Nun bin ich ganz eifrig dabei, meine Mysql Verbindung zu erstellen.

Bei dem Auslesen aus der Datenbank kommt mir doch leider ein Fehler auf. Ich weiss nicht genau wieso, deshalb hier am besten mal der Quellcode
Delphi-Quellcode:

Userauth.SQL.Clear;
Userauth.SQL.Text := 'SELECT `Benutzername`,`Passwort` FROM `user` WHERE `Benutzername` = '':usr'';';
Userauth.Params.Clear;
Userauth.Params.CreateParam(ftString,'usr', ptInput);
Userauth.ParamByName('usr').AsString := User.Text;

Userauth.ExecSQL;
Egal ob ich :usr in Hochkommata setze, wie hier oder ganz ohne, das Erebnis aus Userauth.sql.text ist immer:

SELECT `Benutzername`,`Passwort` FROM `user` WHERE `Benutzername` = ':usr';

Er übernimmt leider die Eingabe aus User.text nicht. Ich wollte mal fragen, wieso nicht?
Oder gibt es da eine andere möglichkeit solche sachen zu übergeben.
Mit
'WHERE `Benutzername` = '''+User.text+''' funktionniert es leider auch nicht richtig, außerdem finde ich das ein wenig umständlich.

Hat da jemand eine Idee?

Mfg, brc
  Mit Zitat antworten Zitat
Benutzerbild von RavenIV
RavenIV

Registriert seit: 12. Jan 2005
Ort: Waldshut-Tiengen
2.875 Beiträge
 
Delphi 2007 Enterprise
 
#2

Re: Sql Befehle mit Parametern absetzen

  Alt 18. Mär 2005, 09:59
warum benutzt du die property "SQL" und "Params" gemeinsam?

ich schreibe das ganze SQL-statement immer in Sql.Text:
query.Sql.Text := 'SELECT * FROM tabelle WHERE feld LIKE ''abc'';'; die "Params" hab ich noch nie gebraucht...

gruessle
Klaus E.
Linux - das längste Text-Adventure aller Zeiten...
Wer nie Linux mit dem vi konfiguriert hat, der hat am Leben vorbei geklickt.
  Mit Zitat antworten Zitat
nieurig

Registriert seit: 26. Apr 2004
113 Beiträge
 
Delphi 6 Professional
 
#3

Re: Sql Befehle mit Parametern absetzen

  Alt 18. Mär 2005, 10:00
Hi,
ich kenne die ZEOS Bibliothek nicht aber:

1.) Versuchmal im SQL Statement die Hochkomma um den Parameternamen wegzulassen.
2.) Ich denke auch das .Clear und .CreateParam kann weg. Zumindest bei den ADOQuery wird mit dem Setzen des Statements eine neue Parameterliste erzeugt und man kann den Parametern sofort Werte zuweisen.

Viel Erfolg
Niels

@RavenIV: Parameter sind meiner Meinung nach die bessere Lösung. Besonders wenn man auf Datumsfelder zugreift muss man sich nicht selbst um die unterschiedliche Schreibweise kümmern.
Erspare Dir die Gedanken über ungelegte Eier !!!
  Mit Zitat antworten Zitat
Benutzerbild von RavenIV
RavenIV

Registriert seit: 12. Jan 2005
Ort: Waldshut-Tiengen
2.875 Beiträge
 
Delphi 2007 Enterprise
 
#4

Re: Sql Befehle mit Parametern absetzen

  Alt 18. Mär 2005, 10:01
hab noch was gefunden:
bist du sicher, dass dein statement funktioniert?
...WHERE feld = ''abc''...

versuch das mal in der SQL-console.

gruessle
Klaus E.
Linux - das längste Text-Adventure aller Zeiten...
Wer nie Linux mit dem vi konfiguriert hat, der hat am Leben vorbei geklickt.
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#5

Re: Sql Befehle mit Parametern absetzen

  Alt 18. Mär 2005, 10:02
So gehts:

Delphi-Quellcode:
Userauth.SQL.Clear;
Userauth.SQL.Text := 'SELECT `Benutzername`,`Passwort` FROM `user` WHERE `Benutzername` = :usr;';
Userauth.ParamByName('usr').AsString := User.Text;
Userauth.ExecSQL;
Das schöne an Params ist, dass du dich nicht um Hochkommata und ähnliches kümmern muss

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
badrulecracker

Registriert seit: 9. Mär 2004
6 Beiträge
 
#6

Re: Sql Befehle mit Parametern absetzen

  Alt 18. Mär 2005, 10:13
Hi,

@alcaeus:
showmessage(userauth.sql.text);
ergibt:
SELECT `Benutzername`, `Passwort` FROM user WHERE `Benutzername` = :usr;


Eigentlich sollte er mir doch ausgeben:
SELECT `Benutzername`, `Passwort` FROM user WHERE `Benutzername` = das_was_ich_eingegeben_habe;

@nieurig:
Ist es nicht von SQL zwangsweise vorgegeben, dass man den String in Hochkommata schreibt?
Clear und CreateParam kann man weglasse habe ich festgestellt, allerdings macht es leider keinen Unterschied, was das Ergebnis betrifft...:-/
  Mit Zitat antworten Zitat
Benutzerbild von RavenIV
RavenIV

Registriert seit: 12. Jan 2005
Ort: Waldshut-Tiengen
2.875 Beiträge
 
Delphi 2007 Enterprise
 
#7

Re: Sql Befehle mit Parametern absetzen

  Alt 18. Mär 2005, 10:17
warum schreibst du nicht einfach:
Userauth.SQL.Text := 'SELECT `Benutzername`,`Passwort` FROM `user` WHERE `Benutzername` = ' + User.Text + ';'; ich mach das immer so und es klappt hervorragend.

meiner meinung nach sind die params nur aus der steinzeit übrig geblieben, man benötigt sie nicht mehr.

gruessle
Klaus E.
Linux - das längste Text-Adventure aller Zeiten...
Wer nie Linux mit dem vi konfiguriert hat, der hat am Leben vorbei geklickt.
  Mit Zitat antworten Zitat
Igotcha

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

Re: Sql Befehle mit Parametern absetzen

  Alt 18. Mär 2005, 10:26
Also ich verstehe das Problem nicht, da schon die "gute" Lösung gezeigt wurde

Ich mache das immer so:

Delphi-Quellcode:
 MainForm.AIOSZQR0.SQL.Text:='SELECT * FROM sys_user WHERE u_username=:username AND u_password=:password';
    MainForm.AIOSZQR0.ParamByName('username').AsString:=Edit1.Text;
    MainForm.AIOSZQR0.ParamByName('password').AsString:=strPass;
    MainForm.AIOSZQR0.Open;
So kannst du auch 10 Parameter im SQL-Statement haben, ohne über irgendwelche "'" zu stolpern.

Gruß Igotcha
  Mit Zitat antworten Zitat
Martoeng

Registriert seit: 21. Jun 2004
44 Beiträge
 
#9

Re: Sql Befehle mit Parametern absetzen

  Alt 18. Mär 2005, 10:30
Hi,

also ich mache es immer folgendermaßen:

Userauth.SQL.Text := 'SELECT Benutzername, Passwort FROM user WHERE Benutzername = ' + quotedstr(User.Text); oder, wenn ich nur nach einem Teilstring suche:

Userauth.SQL.Text := 'SELECT Benutzername, Passwort FROM user WHERE Benutzername LIKE ' + quotedstr('%' + User.Text + '%'); Klappt völlig problemlos!


@Raven:

Zitat:
Userauth.SQL.Text := 'SELECT `Benutzername`,`Passwort` FROM `user` WHERE `Benutzername` = ' + User.Text + ';';
^^Das dürfte nicht klappen, weil sql den Inhalt von User.text so als Feldnamen versteht, oder ?!

MfG

Martoeng
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#10

Re: Sql Befehle mit Parametern absetzen

  Alt 18. Mär 2005, 10:34
Zitat von Martoeng:
^^Das dürfte nicht klappen, weil sql den Inhalt von User.text so als Feldnamen versteht, oder ?!
Genau.

Zitat von badrulecracker:
@alcaeus:
showmessage(userauth.sql.text);
ergibt:
SELECT `Benutzername`, `Passwort` FROM user WHERE `Benutzername` = :usr;
Ja klar. Dein SQL sieht so aus. Bei der Ausführung mit ExecSQL werden dann die Parameterwerte eingefügt.
So kannst du z.B. 10000 Records oder einfügen, musst aber nur ein mal das SQL zusammenbauen. Danach musst du nur noch die Parameter setzen

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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:19 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