![]() |
SQL Tutorial gesucht
Hallo,
ich suche ein SQL Tutorial wo die kommandos genau beschrieben sind und wie sie benutzt werden.. Ich arbeite mit Zeos, scheitere im moment schon bei der useranmeldung: ich habe ein formular in dem ich mich per Username und passwort anmelden will (die user sind in einer sql tabelle hinterlegt) in User(TMaskEdit) gebe ich username ein dann in Pass(TMaskEdit) das passwort nach einem klick auf anmelden baut er die verbindung zum sql server auf, nach erfolgreichem verb. aufbau soll er überprüfen ob das passwort zum usernamen passt... das ist jetzt nur mal son code schnipsel...
Delphi-Quellcode:
procedure TSDIAppForm.ZConnectionAfterConnect(Sender: TObject);
begin Connect.Enabled := False; Abmelden.Enabled := True; begin begin zquery1.sql.append('Select * from user where Username= ' + user.text); zquery1.open; end; end; begin //Hauptmenue.ShowModal; end; end; |
Re: SQL Tutorial gesucht
|
Re: SQL Tutorial gesucht
Auch wenn es mit PHP im Zusammenhang steht:
![]() |
Re: SQL Tutorial gesucht
Hi,
schau Dich mal auf meiner Seite um, da gibts 3 SQL-Tutorials für Interbase/Firebird sowie ein ZEOS-Tutorial von Michael.... Grüße Lemmy |
Re: SQL Tutorial gesucht
Hai SKolberg,
dein "Problem" ist die Art wie Du einen String in deiner SQL-Abfrage einbaust. Dies kann von Datenbank zu Datenbank unterschiedlich sein. In der Regel muss der String aber in ' (hochkommas) eingeschlossen sein. Das sähe dann so aus:
Delphi-Quellcode:
Du solltest aber sofort anfangen dich an Parameter in den Abfragen zu gewöhnen. Dies macht Dir das Leben um einiges einfacher da Du dich nicht mehr darum kümmern musst das die Werte (ganz hart wird es bei einem Datum) richtig übergeben werden.
procedure TForm1.Button2Click(Sender: TObject);
begin ZConnection1.Connect; ZQuery1.SQL.Text := 'SELECT * FROM user WHERE username = ' + QuotedStr(user.Text); ZQuery1.Open; end; Mit Parameter sehe es dann so aus:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin ZConnection1.Connect; ZQuery1.SQL.Text := 'SELECT * FROM user WHERE username = :name'; ZQuery1.ParamCheck := True; // Parameter verwenden ZQuery1.ParamByName('name').AsString := user.Text; // Parameter mit Wert füllen ZQuery1.Open; end; |
Re: SQL Tutorial gesucht
Hallo und allen ein frohes neues jahr,
danke euch für die zahlreichen Antworten kann das aber erst in ein paar tagen ausprobieren da ich mein Notebook erst neu installieren muss, melde mich sobald es klappt, oder auch nicht. Mfg, Steve |
Re: SQL Tutorial gesucht
hallo,
so weit funktioniert alles ganz gut aber ich verstehe einen fehler nicht... :wall: ich habe einige testbenutzer eingerichtet: user passwort admin test0 marketing test1 bearbeiter test2 betrachter test3 falls aber 2 benutzer genau das gleiche passwort haben bekomme ich bei beiden die meldung benutzername falsch, kann das aber nicht nachvollziehen da es doch eigentlich egal sein sollte und er nur überprüft ob die eingaben übereinstimmen..
Delphi-Quellcode:
vielen dank im voraus, Steve
procedure TSDIAppForm.ZConnectionAfterConnect(Sender: TObject);
begin Connect.Enabled := False; begin begin ZConnection1.Connect; ZQuery1.SQL.Text := 'SELECT * FROM user WHERE username = ' + QuotedStr(user.Text); ZQuery1.Open; end; ZConnection1.Connect; ZQuery1.SQL.Text := 'SELECT * FROM user WHERE userpasswd = ' + QuotedStr(pass.Text); ZQuery1.Open; end; if user.Text = (ansilowercase(username.text)) then begin if pass.Text = Passwort.Text then Hauptmenue.ShowModal else MessageBox(self.Handle, 'Passwort falsch, bitte überprüfen Sie ihre Angaben!', 'Fehler!', 48 or MB_OK); pass.clear; user.Clear; end else MessageBox(self.Handle, 'Benutzername falsch, bitte überprüfen Sie ihre Angaben!', 'Fehler!', 48 or MB_OK); user.clear; pass.Clear; end; |
Re: SQL Tutorial gesucht
Zitat:
Warum machst Du das nicht so:
Delphi-Quellcode:
Und fragst dann ab, ob ZQuery1.RecordCount > 0 ist - dann hat er nämlich einen User mit der eingegebenen Username/Passwort-Kombination gefunden.
ZQuery1.SQL.Text := 'SELECT * FROM user WHERE username = :name AND userpasswd = :pass';
ZQuery1.ParamByName('name').AsString:=user.Text; ZQuery1.ParamByName('pass').AsString:=pass.Text; ZQuery1.Open; Viele Grüße Igotcha |
Re: SQL Tutorial gesucht
danke funktioniert super,
wo hatte ich denn jetzt aber meinen fehler?? |
Re: SQL Tutorial gesucht
Zitat:
Der hast einen viel zu komplizierten Ansatz genommen. Die Frage, die zu beantworten ist ist doch: "Gibt es einen User mit einer bestimmten Benutzername/Passwort-Kombination?" Wie du siehst, reichen dazu meine 4 Zeilen aus, um diese Frage zu beantworten.
Delphi-Quellcode:
Wo kommt denn Passwort.Text her?
if pass.Text = Passwort.Text
Und benutze bitte in Zukunft die "ParamByName"-Methode. Das erspart Dir viel Ärger beim Zusammenbasteln von SQL-Strings :mrgreen: Viele Grüße Igotcha |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:21 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