Verwendetes Datenbanksystem: MySQL
Hallo, ich habe nach dem installieren eines Sicherheitslückencheckers von Microsoft für VS herausgefunden dass ich meine Input Parameter vorher auf richtigkeit prüfen sollte. Microsoft hat mir da die Funktion Parameters.Add vorgeschlagen aber irgendwie funktioniert es bei mich nicht so richtig. Beim debbuging bleibt der CommandText auch immer so wie ich in als erstes eingestellt habe.
Das wäre mein Code gewesen:
com = connection.CreateCommand();
com.CommandText = "select UserID from Users where Username= @username and Password= @password";
com.Parameters.Add("@username", MySqlDbType.VarString).Value = Username;
com.Parameters.Add("@password", MySqlDbType.VarString).Value = EncryptString(Password);
var resault = com.ExecuteScalar();
im endefekt ist resault dann null. Und bekomme eine NullFequezerException (Keine Ahnung wie man das schreibt).
Vieleicht fällt jemandem mein Fehler auf warum es nicht Funktioniert.
Danke schon im Voraus 🙂
LG BierDav
Trifft eine Programmiererin ihre Freundin und die Freundin fragt: "Mit welchen Typen hängst du so in letzter Zeit rum?" Die Programmiererin antwortet: „integers, booleans und strings“
Die Doku zu MySqlCommand.ExecuteScalar ist da recht deutlich.
Da du scheinbar keinen Eintrag zurück bekommst auf dein Select, wird auch Null geliefert.
Entsprechend musst du dein result auch auf Null prüfen.
Und es heiß NullReferenceException.
Anbei noch einen Tipp.
Arbeite dringend an deiner Rechtschreibung.
Du hast gefühlt in jedem Satz einen Fehler in deinem Beitrag.
T-Virus
Developer, Developer, Developer, Developer....
99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.
bekomme eine NullFequezerException (Keine Ahnung wie man das schreibt).
Du erwartest Hilfe - dann bemüh Dich doch wenigstens so, dass Du zumindest mal eine korrekt formulierte Fehlermeldung angibst.
Ansonsten wirkt das gegenüber Helfern wie hingeklatscht und hinge*.
Wie man eine NullReferenceException löst steht in der FAQ.
[FAQ] NullReferenceException: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt
Dazu verwendet man den Debugger.
[Artikel] Debugger: Wie verwende ich den von Visual Studio?
Beim debbuging bleibt der CommandText auch immer so wie ich in als erstes eingestellt habe.
SQL Parameter werden bei ADO.NET getrennt vom Command übertragen - es ist korrekt, dass der String hier nicht replaced wird.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code