Entwickler-Ecke

Datenbanken (inkl. ADO.NET) - [Grundlage]Frage zur Mysql Syntax in meinem Programm


Nextlive - Di 19.04.11 14:08
Titel: [Grundlage]Frage zur Mysql Syntax in meinem Programm
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 - 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:

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


Th69 - Di 19.04.11 15:40

Hallo,

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

Weiteres Stichwort: SQL-Injection [http://de.wikipedia.org/wiki/SQL-Injection]


Nextlive - Di 19.04.11 15:51

Ah ok vielen Dank es funktioniert jetzt :D