Entwickler-Ecke

Datenbanken - TDatabase Login SQL


Mike_2005 - Mi 20.10.04 08:58
Titel: TDatabase Login SQL
Hallo,
ich habe folgendes Problem:
Ich lasse in 2 Edit Feldern Name (loginname) und Passwort (loginpass) eingeben.
Anschließend kann man auf Login (Button) klicken, nun wird der folgende Code ausgeführt:

Database1->DatabaseName ="TESTDB01";
Database1->Params->Values["user name"] = loginname->Text;
Database1->Params->Values["password"] = loginpass->Text;

Wenn es erfolgreich ist wird ein neues Formular aufgerufen.
Wenn nicht bekomme ich eine Fehlermeldung vom Builder.
Wie kann ich abfragen ob das Passwort oder der Name (Benutzername) in Ordnung ist bzw.
Welche Funktion bietet TDatabase für einen Rückgabewert ?

Wenn ein Parameter falsch ist, soll ein Formular "Login-Fehler" aufgerufen werden.)

Vielen Dank
Mike


mettie84 - Mi 20.10.04 10:44

Für dieses Problem gibt es schon einen Thread. Ich habs nur anders ausgedrückt. Aber da antwortet auch keiner drauf.

MfG Matthias


Mike_2005 - Mi 20.10.04 13:27

Und auch noch keine Lösung ?


MAlsleben - Do 21.10.04 11:19

Hi,

ich würde es mal so probieren:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
Database1.LoginPrompt:=false;
try
  Database1.connected:=true;// wenn das in die Hose geht, wird eine exception ausgelöst
  form2.show; // wird nur ausgeführt, wenn vorher keine exception stattfindet


except
   // eventl. Message ausgeben oder Formular Login fehler aufrufen

end// Try


Gruß Micha


mettie84 - Do 21.10.04 11:23

Das ist richtig. Aber wie reagiere ich gezielt auf Eingabefehler. Wie kann ich feststellen, ob ein falsches Passwort eingegeben wurde, oder ein falscher Benutzername.

Das gibt die Exception allein nicht her.


MAlsleben - Do 21.10.04 13:04

Hi,


wenn die Info 100% ig aus der Datenbank kommen soll, kannst Du das ja erst mit dem Connect zu DB feststellen. Wenn Du das nicht ein einen try ... except Block packst, bekommmst Du z.B. genau die Fehlermeldung, Benutzername oder Passwort falsch.

Das heißt, wenn eine Exception an der Stelle auftritt, ist entweder die Datenbank nicht da, na gut dann ist es auch egal, was der User eingibt. Aber auch hier läßt sich die entsprechende Fehlermeldung im Except -Block ausgeben.

Meines erachtens kannst Du im except- Block doch darauf reagieren.

Wenn Du das natürlich vor dem DB- Connect machen willst, dann müßtest Du permanent die entsprechenden Daten aus der DB auslesen und lokal abspeichern und dort vergleichen. Das widerspricht aber jeglichen Konzepten der Arbeit mit RDBMS- Systemen.

Gruß Micha.