Secret Squirrel hatte Recht mit der Verwendung des "?" für parametrisierte Variablen. MySQL verwendet "@" für Inline-SQL-Variablen für Abfragen und erwartet daher, dass sie beispielsweise von einem Skript oder einem Teil einer Inline-Deklaration (Unterabfrage auswählen) deklariert werden.
Sie müssen BEIDE Instanzen der Parameter ändern... sowohl in der Abfrage als auch als command.Parameters.Add...-Instanzen.
Ich habe es auch bemerkt und bin mir nicht sicher, ob es das ist oder nicht, aber in Ihrer WHERE-Klausel haben Sie "Passwort" (nur ein 's') vs. Passwort (zwei 's'). Ich weiß nicht, ob dies beabsichtigt ist oder nicht. P>
Eine LETZTE Sache, die helfen KANN. Da einige der Parameter mit den Spaltennamen übereinstimmen, würde ich vorschlagen, die Parameter LEICHT zu ändern, indem Sie einfach so etwas wie "x" hinzufügen, um die Unterscheidung zwischen dem Spaltennamen und den tatsächlichen Parametern zu ERZWINGEN ...
where... p.LoginID = ?xLoginID ...
und in den Befehlsparametern
objCommand.Parameters.AddWithValue("?xLoginID", loginID);