Secret Squirrel hade rätt när han använde "?" för parametriserade variabler. MySQL använder "@" för inline sql-variabler för frågor och förväntar sig därför att de ska deklareras som från ett skript eller en del av en inline-deklaration (välj underfråga).
Du måste ändra BÅDA instanser av parametrarna... både i frågan och som kommandot.Parameters.Add... instanser.
Jag märkte också, och jag är inte säker på om det är det eller inte, men i din WHERE-klausul har du "lösenord" (endast ett 's') kontra lösenord (två 's') Vet inte om det är avsiktligt eller inte.
En SISTA sak som KAN hjälpa. Eftersom några av parametrarna matchar kolumnnamnen, skulle jag föreslå att du ändrar parametrarna NÅGOT genom att bara lägga till något som "x" för att FORCE differentiering mellan kolumnnamnet och de faktiska parametrarna...
where... p.LoginID = ?xLoginID ...
och i kommandoparametrarna
objCommand.Parameters.AddWithValue("?xLoginID", loginID);