Hi junx!
Hab mich etwas in
mysql eingelesen, rumgebastelt, getestet,.. und es jetzt geschafft mit einem Programm meine
mysql-Datenbank zu verwalten. Hab mir hier
http://www.michael-puff.de/Developer/Delphi/Tutorials/ das Beispielprogramm runtergeladen und etwas editiert(siehe Anhang).
Soweit funktioniert auch alles, außer der "ändern" button, jedoch ist das nicht weiter schlimm.
Nun will ich in einem anderem Delphi-Programm 2 Editfelder einfügen.
Edit1 für den usernamen, Edit2 für das userpw und dazu noch ein login-Button.
Es soll dann geprüft werden, ob der username und das userpasswort mit dem in der
mysql Datenbank übereinstimmen.
Ich würde das hinkriegen, in dem ich wie in dem Programm im Anhang einfach alles auslese und dann nach dem username in der Tabelle suche(die Zeile rauskriege) und dann eine Spalte weiter das Passwort überprüfen lasse. Jedoch ist mir das zu unsicher und geht sicher viel einfacher.
Also meine Frage: wie kann ich praktisch NUR die Zeile mit username+passwort auslesen und checken obs richtig ist, ohne gleich alles auszulesen, denn das halte ich für unsicher
Was ich bisher habe ist das hier:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
_myCon: PMySQL;
//unseren Verbindungsdeskriptor
host, user, pass,
db: PChar;
//die Anmeldedaten
_myRes: PMySQL_Res;
//hier wird der gesamte Ergebnissatz
idAuthor:
String;
_mySubRes: PMySQL_Res;
//benötigt, um Autor zu ermmitteln
_myRow: PMySQL_Row;
//enthält den aktuellen Datensatz
_mySubRow: PMySQL_Row;
//benötigt, um Autor zu ermmitteln
query:
String;
vorname:
String;
begin
//Aufnehmen der Anmeldedaten
host := pchar(edit1.Text);
user := pchar(edit2.Text);
//allgemein der username um in die datenbank reinzukommen(root)
pass := pchar(edit3.Text);
//allgemein das pw
db := pchar(edit4.Text);
//datenbank
username:=pchar(edit5.Text);
//zu prüfender username(steht in der mysql-tabelle)
userpw:=pchar(edit6.text);
//zu prüfendes userpw (steht in der mysql-tabelle)
//jetzt wird _myCon initialisiert
_myCon := mysql_init(
nil);
if _myCon =
nil then
begin
ShowMessage('
Nicht genug freier Speicher, um Verbindungsdeskriptor zu initialisieren');
Exit;
end;
//anschließend wird die Verbindung hergestellt
if mysql_real_connect(_myCon, host, user, pass,
db, 3306,
nil, 0) =
nil then
begin
ShowMessage('
Die Verbindung konnte nicht hergestellt werden. Ursache: ' + mysql_error(_myCon));
Exit;
end;
ShowMessage('
Verbindung hergestellt');
query := '
SELECT vorname FROM apitest WHERE nr=0';
mysql_close(_myCon);
end;
Verbinung hergestellt, soweit schonmal gut. Jedoch fehlt noch das Auslesen der Tabelle und das prüfen des username+pw!
Danke im Vorraus, mfy infY