Sekretna wiewiórka poprawnie użyła znaku „?” dla zmiennych sparametryzowanych. MySQL używa "@" dla wbudowanych zmiennych sql dla zapytań i dlatego oczekuje, że zostaną one zadeklarowane na przykład ze skryptu lub części deklaracji wbudowanej (wybierz podzapytanie).
Musisz zmienić OBYDWA instancje parametrów... zarówno w zapytaniu, jak i jako instancje command.Parameters.Add...
Zauważyłem też i nie jestem pewien, czy to tak, czy nie, ale w klauzuli WHERE masz "hasło" (tylko jedno) vs hasło (dwa) Nie wiem, czy celowe, czy nie.
Jedna OSTATNIA rzecz, która MOŻE pomóc. Ponieważ niektóre parametry pasują do nazw kolumn, sugerowałbym nieznaczną zmianę parametrów poprzez dodanie czegoś takiego jak "x" do FORCE rozróżnienia między nazwą kolumny a rzeczywistymi parametrami...
where... p.LoginID = ?xLoginID ...
oraz w parametrach polecenia
objCommand.Parameters.AddWithValue("?xLoginID", loginID);