Autor Beitrag
Nextlive
Hält's aus hier
Beiträge: 8



BeitragVerfasst: Di 19.04.11 14:08 
Hallo liebe Community,

ich schreibe im Moment ein Programm, welches eine MysqlDatenbank nutzt.
Ich versuch mich gerade an einem Loginsystem.
Erster Schritt ist, dass ich mich mit meiner Datenbank verbinde. Das funktioniert ohne probleme.
Nun möchte ich, wenn der User auf "Login" klickt, dass auf die Datenbanktabelle zugegriffen wird und dort geguckt wird, ob dieser Username existiert. Wenn ja wird das gleiche mit dem PW gemacht. Aber erstmal zum Usernamen
Ok angenommen meine Datenbank heißt Csharpprogramm. Dort existiert eine Tabelle mit dem namen "Benutzerdaten".
Diese Tabelle hat 2 Spalten: "Username" und "Password". Ich möchte jetzt den, aus einer Textbox eingelesenen Usernamestring (gespeichert in Variable sUsername), mit der Tabelle vergleichen und schauen, ob dieser vorhanden ist. Was passiert wenn er nicht vorhanden ist ist erstmal nebensache.
Hier mein Code:

mysqlcmd.CommandText = "Select Username from Benutzerdaten where Username=" + sUsername;

Ich verstehe nicht so ganz was falsch an dem Befehl ist. Ich wähle die Spalte Username aus der Tabelle Benutzerdaten aus und lass ihn nach einem Eintrag "Username="+sUsername suchen.

Jetzt ins praktische:

Ich starte das Programm. Der loginscreen erscheint und ich gebe den Benutzer "Admin" ein(dieser existiert in der DB). Wenn ich nun auf Login klicke, dann erscheint im Debugger "Unknown column 'Admin' in 'where clause'"
Ich versteh nicht ganz den Fehler, den ich gemacht hab :(
Hoffe mir kann da jemand weiterhelfen

Greetz
Trashkid2000
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 561
Erhaltene Danke: 137



BeitragVerfasst: Di 19.04.11 15:28 
Hallo,

der Fehler liegt darin, dass der Username ja eine Zeichenfolge ist und auch so im Command abgebildet werden muss. Also so:
ausblenden C#-Quelltext
1:
mysqlcmd.CommandText = "Select Username from `Benutzerdaten` where Username = '" + sUsername + "';";					
Den Tabellennamen habe ich mal eingequotet. Ansonsten solltest Du den Usernamen lieber als Parameter an den Command übergeben, dann hast Du auch nicht das Problem mit den Hochkommas.
LG

Für diesen Beitrag haben gedankt: Nextlive
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4799
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Di 19.04.11 15:40 
Hallo,

vor kurzem hatte ich einen ähnlichen Rat (und Link!) bzgl. SQL-Parameter gegeben, s. www.c-sharp-forum.de....php?p=638561#638561

Weiteres Stichwort: SQL-Injection
Nextlive Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: Di 19.04.11 15:51 
Ah ok vielen Dank es funktioniert jetzt :D