Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi SQL Tutorial gesucht (https://www.delphipraxis.net/36770-sql-tutorial-gesucht.html)

SKolberg 25. Dez 2004 13:48


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;

MarkusB 25. Dez 2004 15:42

Re: SQL Tutorial gesucht
 
Moin SKolberg!

SQL-Tutorial

Frohe Weihnachten!

Viele Grüße
Markus
:gruebel:

MasterC 25. Dez 2004 15:51

Re: SQL Tutorial gesucht
 
Auch wenn es mit PHP im Zusammenhang steht: http://schattenbaum.net/php/

Lemmy 26. Dez 2004 07:26

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

Sharky 27. Dez 2004 08:38

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:
procedure TForm1.Button2Click(Sender: TObject);
begin
  ZConnection1.Connect;
  ZQuery1.SQL.Text := 'SELECT * FROM user WHERE username = ' + QuotedStr(user.Text);
  ZQuery1.Open;
end;
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.

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;

SKolberg 5. Jan 2005 06:57

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

SKolberg 11. Jan 2005 10:21

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:
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;
vielen dank im voraus, Steve

Igotcha 11. Jan 2005 10:40

Re: SQL Tutorial gesucht
 
Zitat:

Zitat von SKolberg
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:
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;

Naja, das ist auch etwas unsinnig, wenn ich so sagen darf.

Warum machst Du das nicht so:

Delphi-Quellcode:
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;
Und fragst dann ab, ob ZQuery1.RecordCount > 0 ist - dann hat er nämlich einen User mit der eingegebenen Username/Passwort-Kombination gefunden.

Viele Grüße
Igotcha

SKolberg 11. Jan 2005 10:50

Re: SQL Tutorial gesucht
 
danke funktioniert super,
wo hatte ich denn jetzt aber meinen fehler??

Igotcha 11. Jan 2005 11:54

Re: SQL Tutorial gesucht
 
Zitat:

Zitat von SKolberg
danke funktioniert super,
wo hatte ich denn jetzt aber meinen fehler??

Naja, das war alles irgendwie Kuddelmuddel ;-)

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:
if pass.Text = Passwort.Text
Wo kommt denn Passwort.Text her?

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 02:12 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