Secret Squirrel had gelijk bij het gebruik van de "?" voor geparametriseerde variabelen. MySQL gebruikt "@" voor inline sql-variabelen voor query's en verwacht dus dat ze worden gedeclareerd, zoals vanuit een script of een deel van een inline (selecteer subquery)-declaratie.
U moet BEIDE instanties van de parameters wijzigen... zowel in de query als in de opdracht.Parameters.Add... instanties.
Ik merkte ook op, en ik weet niet zeker of het het is of niet, maar in je WHERE-clausule heb je "wachtwoord" (slechts één 's') versus wachtwoord (twee 's'). Ik weet niet of dit opzettelijk is of niet.
Een laatste ding dat KAN helpen. Aangezien sommige parameters overeenkomen met de kolomnamen, zou ik willen voorstellen om de parameters LICHTJES te wijzigen door iets als "x" toe te voegen aan FORCE-differentiatie tussen de kolomnaam en de daadwerkelijke parameters...
where... p.LoginID = ?xLoginID ...
en in de opdrachtparameters
objCommand.Parameters.AddWithValue("?xLoginID", loginID);