![]() |
Datenbank: Mysql • Version: 4.0 • Zugriff über: ZeosLib
Sql Befehle mit Parametern absetzen
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:
Egal ob ich :usr in Hochkommata setze, wie hier oder ganz ohne, das Erebnis aus Userauth.sql.text ist immer: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; 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 |
Re: Sql Befehle mit Parametern absetzen
warum benutzt du die property "SQL" und "Params" gemeinsam?
ich schreibe das ganze SQL-statement immer in Sql.Text:
Delphi-Quellcode:
die "Params" hab ich noch nie gebraucht...
query.Sql.Text := 'SELECT * FROM tabelle WHERE feld LIKE ''abc'';';
gruessle |
Re: Sql Befehle mit Parametern absetzen
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. |
Re: Sql Befehle mit Parametern absetzen
hab noch was gefunden:
bist du sicher, dass dein statement funktioniert? ...WHERE feld = ''abc''... versuch das mal in der SQL-console. gruessle |
Re: Sql Befehle mit Parametern absetzen
So gehts:
Delphi-Quellcode:
Das schöne an Params ist, dass du dich nicht um Hochkommata und ähnliches kümmern muss :)
Userauth.SQL.Clear;
Userauth.SQL.Text := 'SELECT `Benutzername`,`Passwort` FROM `user` WHERE `Benutzername` = :usr;'; Userauth.ParamByName('usr').AsString := User.Text; Userauth.ExecSQL; Greetz alcaeus |
Re: Sql Befehle mit Parametern absetzen
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...:-/ |
Re: Sql Befehle mit Parametern absetzen
warum schreibst du nicht einfach:
Delphi-Quellcode:
ich mach das immer so und es klappt hervorragend.
Userauth.SQL.Text := 'SELECT `Benutzername`,`Passwort` FROM `user` WHERE `Benutzername` = ' + User.Text + ';';
meiner meinung nach sind die params nur aus der steinzeit übrig geblieben, man benötigt sie nicht mehr. gruessle |
Re: Sql Befehle mit Parametern absetzen
Also ich verstehe das Problem nicht, da schon die "gute" Lösung gezeigt wurde ;-)
Ich mache das immer so:
Delphi-Quellcode:
So kannst du auch 10 Parameter im SQL-Statement haben, ohne über irgendwelche "'" zu stolpern.
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; Gruß Igotcha |
Re: Sql Befehle mit Parametern absetzen
Hi,
also ich mache es immer folgendermaßen:
Delphi-Quellcode:
oder, wenn ich nur nach einem Teilstring suche:
Userauth.SQL.Text := 'SELECT Benutzername, Passwort FROM user WHERE Benutzername = ' + quotedstr(User.Text);
Delphi-Quellcode:
Klappt völlig problemlos!
Userauth.SQL.Text := 'SELECT Benutzername, Passwort FROM user WHERE Benutzername LIKE ' + quotedstr('%' + User.Text + '%');
@Raven: Zitat:
MfG Martoeng |
Re: Sql Befehle mit Parametern absetzen
Zitat:
Zitat:
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 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:40 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz