| Autor |
Beitrag |
DIGIMan
      
Beiträge: 37
|
Verfasst: So 19.02.06 13:14
Servus,
ich muß gleich dazu sagen das ich neu bin auf den Gebiet und versuche meine erste Abfrage an die Datenbank zusammen zu basteln, ich lerne schnell! Würde mich super freuen wenn mir jemand beim ersten Schritt helfen könnte!
So ich benutze Delphi 6 und will die Datenbank Msql benutzen
Ich benutze folgende Datenbank Komponente die als Anhang dabei ist!
Nun möchte ich an meiner Datenbank Benutzernamen und Passwort abfragen ob diese Korrekt sind!
Was muß ich machen? Beispiele habe ich für die Komponente nicht gefunden!
LG DIGIMan
Einloggen, um Attachments anzusehen!
|
|
Blawen
      
Beiträge: 616
Erhaltene Danke: 33
Win XP, Vista, 7
Delphi 5 Prof., BDS 2006 Prof. RAD Studio XE
|
Verfasst: So 19.02.06 13:44
Hallo Digiman
Mit Deinem Beispiel kann ich nicht viel anfangen. (um was für eine Komponente handelt es sich ?)
Mit den Zeos-Komponenten kann man die Anmeldung z.B. so umsetzen: Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| Try with ZConnection do begin User := User; Password := Passwort; HostName := Hostname; Port := Port; Database := DB; Protocol := Protocol; Connect; ZQuery1.Active := False; ZQuery1.SQL.Text := 'Select * from MITARBEITER'; ZQuery1.Active := True; end; Except ShowMessage('Zur Datenbank konnte nicht verbunden werden.'); end; |
Mit anderen Komponenten dürfe es sich gleich/ähnlich verhalten.
Gruss
Blawen
Zuletzt bearbeitet von Blawen am So 19.02.06 14:43, insgesamt 1-mal bearbeitet
|
|
DIGIMan 
      
Beiträge: 37
|
Verfasst: So 19.02.06 13:51
Meine Komponente ist speziell für Mysql aufgebaut und ich tragen nur die Zugangsdaten ein und schon habe ich eine Verbindung zur Datenbank. Nun suche ich Beispiele wie man Edit1 und Edit2 für Benutzername und Passwort mit der Datenbank abfragt und der Login Button dies ausführt!
Zeos bekomme ich leider nicht installiert!
|
|
Blawen
      
Beiträge: 616
Erhaltene Danke: 33
Win XP, Vista, 7
Delphi 5 Prof., BDS 2006 Prof. RAD Studio XE
|
Verfasst: So 19.02.06 13:54
DIGIMan hat folgendes geschrieben: | Meine Komponente ist speziell für Mysql aufgebaut und ich tragen nur die Zugangsdaten ein und schon habe ich eine Verbindung zur Datenbank. Nun suche ich Beispiele wie man Edit1 und Edit2 für Benutzername und Passwort mit der Datenbank abfragt und der Login Button dies ausführt!
Zeos bekomme ich leider nicht installiert! |
Gehts nur darum: (?)
Delphi-Quelltext 1:
| passwort := edit1.Text |
Zeos:
Welche Delphi Version setzt Du ein?
|
|
DIGIMan 
      
Beiträge: 37
|
Verfasst: So 19.02.06 13:56
Das steht im ersten Beitrag Delphi 6 jetzt muß ich nur die Datenbank abfragen mit select aber wie schaut es aus?
|
|
Blawen
      
Beiträge: 616
Erhaltene Danke: 33
Win XP, Vista, 7
Delphi 5 Prof., BDS 2006 Prof. RAD Studio XE
|
Verfasst: So 19.02.06 14:03
DIGIMan hat folgendes geschrieben: | | Das steht im ersten Beitrag Delphi 6 jetzt muß ich nur die Datenbank abfragen mit select aber wie schaut es aus? |
Ich habe u.a. Delphi5, dort lässt sich die neuste Version der Zeos nicht installieren. Mit der ZEOS Version vom 14.11.2005 gehts problemlos ( sourceforge.net/proj...amp;package_id=28219)
Es geht also nicht um die eigentliche Verbindung, sondern darum ob der Benutzername und das Passwort übereinstimmen?
Delphi-Quelltext 1:
| 'Select * from Tabelle WHERE PERSONALNUMMER = ' + Edit1.Text + ' AND PASSWORT = ' + Edit2.Text; |
Wenn die Ergebnismenge 0 ist, stimmt entweder das Passwort oder der Benutzername nicht.
Zuletzt bearbeitet von Blawen am So 19.02.06 14:34, insgesamt 1-mal bearbeitet
|
|
DIGIMan 
      
Beiträge: 37
|
Verfasst: So 19.02.06 14:09
Hast du MSN?
Ich würde Dir mal Zugriff auf meinen Rechner geben damit du es dir mal anschauen kann?
|
|
Blawen
      
Beiträge: 616
Erhaltene Danke: 33
Win XP, Vista, 7
Delphi 5 Prof., BDS 2006 Prof. RAD Studio XE
|
Verfasst: So 19.02.06 14:14
DIGIMan hat folgendes geschrieben: | Hast du MSN?
Ich würde Dir mal Zugriff auf meinen Rechner geben damit du es dir mal anschauen kann? |
Habe ich nicht.
Ev. musst Du nur Dein Problem genauer umschreiben?
So verstehen ich es (bisher):
- Der Zugriff zu Datenbank gelingt Dir
- Du möchtest kontrollieren, ob der angemeldete Benutzer (Edit1, Edit2) sich korrekt authorisiert hat
|
|
DIGIMan 
      
Beiträge: 37
|
Verfasst: So 19.02.06 14:21
Du hast es genau erfasst!
Ich habe das Feld: Benutzername und Passwort und nun soll der Button Login die abfragen und Label2 soll dann bei falscher Eingabe folgende ausgeben: Zugangsdaten nicht korrekt!
Wie schaut es nun aus?
Ich habe Zweit Komponenten in mein Formunlar hinzugefügt:
MyDatabase1
MyDataSet1
|
|
DIGIMan 
      
Beiträge: 37
|
Verfasst: So 19.02.06 14:28
Hier ein Screenshot von meinem Rechner!
Einloggen, um Attachments anzusehen!
|
|
Blawen
      
Beiträge: 616
Erhaltene Danke: 33
Win XP, Vista, 7
Delphi 5 Prof., BDS 2006 Prof. RAD Studio XE
|
Verfasst: So 19.02.06 14:33
DIGIMan hat folgendes geschrieben: | Du hast es genau erfasst!
Ich habe das Feld: Benutzername und Passwort und nun soll der Button Login die abfragen und Label2 soll dann bei falscher Eingabe folgende ausgeben: Zugangsdaten nicht korrekt!
Wie schaut es nun aus?
Ich habe Zweit Komponenten in mein Formunlar hinzugefügt:
MyDatabase1
MyDataSet1 |
Handelt es sich bei der Komponente umd MySQL direkt -> wenn ja gibts dazu ein Tutorial: www.dsdt.info/tutorials/mysqldirect/
Ansonsten:
Obiger Weg sollte grundsätzlich gehen:
- Einen Select String mit den Bedingungen Edit1 und Edit2 generieren
Delphi-Quelltext 1:
| 'Select * from Tabelle WHERE ' + Edit1.Text + ' = ' + Edit2.Text; |
- die zurückgelieferte Datenmenge kontrollieren. Wenn es keine Übereinstimmung gibt, sind die eingegeben Daten falsch
Sinngemässes Beispiel:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9:
| TForm1.LoginClick(Sender : TObject) begin Query.Active := False; Query.SQL.Text := 'Select * from Mitarbeiter WHERE Personalnummer = ' + Edit1.Text + ' AND Passwort = ' + Edit2.Text; Query.Active := True;
IF Query.EOF THEN .... end; |
Zuletzt bearbeitet von Blawen am So 19.02.06 14:54, insgesamt 1-mal bearbeitet
|
|
DIGIMan 
      
Beiträge: 37
|
Verfasst: So 19.02.06 14:48
Das ist schon mal super und ich werde es gleich mal testen....
|
|
DIGIMan 
      
Beiträge: 37
|
Verfasst: So 19.02.06 15:01
Ich habe das mal so eingabaut:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7:
| MyDataSet1.Active := False; MyDataSet1.SQL.Text := 'Select * from users WHERE username = ' + Username.Text + ' AND passwort = ' + Passwort.Text; MyDataSet1.Active := True;
IF MyDataSet1.EOF THEN |
Ich bekomme folgenden Fehler:
Im Project Surfbar.exe ist eine Exception der Klasse EDatabaseError aufgetreten.
Meldung: 'own column'webmaster' in 'where clause'
Was habe ich falsch gemacht?
Moderiert von raziel: Quote- durch Delphi-Tags ersetzt
|
|
Blawen
      
Beiträge: 616
Erhaltene Danke: 33
Win XP, Vista, 7
Delphi 5 Prof., BDS 2006 Prof. RAD Studio XE
|
Verfasst: So 19.02.06 15:21
DIGIMan hat folgendes geschrieben: | Ich bekomme folgenden Fehler:
Im Project Surfbar.exe ist eine Exception der Klasse EDatabaseError aufgetreten.
Meldung: 'own column'webmaster' in 'where clause'
Was habe ich falsch gemacht? |
Stimmen die Angaben im SQL-String mit den Feldnamen überein?
|
|
DIGIMan 
      
Beiträge: 37
|
Verfasst: So 19.02.06 15:29
Ich muß es so machen, da ich die UserID in Form2 mit übergeben will!
Also müssen wir per IF-Schleife schauen ob die Daten korrekt sind!
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
| procedure TForm1.LoginClick(Sender: TObject); begin MyDataSet1.Active := False; MyDataSet1.SQL.Text := 'Select id,username,passwort from users WHERE username = ' + Username.Text + '; MyDataSet1.Active := True;
IF MyDataSet1.EOF THEN begin // Kein Benutzer vorhanden ShowMessage('Benutzerdaten sind nicht korrekt'); else Form1.Hide; Form2.Show;
end;
end; |
Das bedeute die Augabe der Daten muß noch kommen und dann IF umändern aber wie?
Moderiert von raziel: Code- durch Delphi-Tags ersetzt
|
|
Blawen
      
Beiträge: 616
Erhaltene Danke: 33
Win XP, Vista, 7
Delphi 5 Prof., BDS 2006 Prof. RAD Studio XE
|
Verfasst: So 19.02.06 15:43
Zuletzt bearbeitet von Blawen am So 19.02.06 16:51, insgesamt 1-mal bearbeitet
|
|
DIGIMan 
      
Beiträge: 37
|
Verfasst: So 19.02.06 15:56
|
|
Blawen
      
Beiträge: 616
Erhaltene Danke: 33
Win XP, Vista, 7
Delphi 5 Prof., BDS 2006 Prof. RAD Studio XE
|
Verfasst: So 19.02.06 16:01
| Zitat: |
Was muß ich noch machen? |
Sorry, mein Fehler:
';' nicht erlaubt
-> ; vor dem end wegnehmen:
so müsste es aussehen:
Delphi-Quelltext 1: 2: 3:
| Form2.Show; end ELSE ShowMessage('Benutzerdaten sind nicht korrekt'); |
UserID
Die UserID habe ich als Integer angenommen (Sorry, die Deklaration habe ich unterschlagen -> var UserID : Integer)
(Im ersten Beispiel nannte ich es nur ID - Soorry)
Es ging mir nur darum, aufzuzeigen wie die ID des Datensatzes ermittelt werden kann.
Die weitere Verarbeitung der ID hängt vom konkreten Projekt ab.
|
|
DIGIMan 
      
Beiträge: 37
|
Verfasst: So 19.02.06 16:08
UserID:
Er kennt die var nicht, muß die nicht erst definiert werden, damit er sie benutzen kann?
[Fehler] surfbar1.pas(59): Undefinierter Bezeichner: 'UserID'
|
|
Blawen
      
Beiträge: 616
Erhaltene Danke: 33
Win XP, Vista, 7
Delphi 5 Prof., BDS 2006 Prof. RAD Studio XE
|
Verfasst: So 19.02.06 16:15
DIGIMan hat folgendes geschrieben: | UserID:
Er kennt die var nicht, muß die nicht erst definiert werden, damit er sie benutzen kann?
[Fehler] surfbar1.pas(59): Undefinierter Bezeichner: 'UserID' |
Eigentlich schon!
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
| procedure TForm1.LoginClick(Sender: TObject); var UserID : Integer;
begin MyDataSet1.Active := False; MyDataSet1.SQL.Text := 'Select id,username,passwort from users WHERE username = ' + Username.Text + ' AND Passwort = ' + Passwort; MyDataSet1.Active := True;
IF NOT MyDataSet1.EOF THEN begin ID := Query.FieldByName('ID').AsInteger; Form1.Hide; Form2.Show; end ELSE ShowMessage('Benutzerdaten sind nicht korrekt'); end; |
Wie geschrieben, es ging mir im Beispiel darum, wie Du zur ID des aktuellen Datensatzes gelangst.
Was Du damit aber machen willst, ist bisher nicht definiert (Globale Variable, Parameter-Übergabe,... ?)
Somit ist je nach Vorgehen der Definitionsort der UserID unterschiedlich.
Zuletzt bearbeitet von Blawen am So 19.02.06 16:50, insgesamt 2-mal bearbeitet
|
|