Tupai Rahasia benar dalam menggunakan "?" untuk variabel parameter. MySQL menggunakan "@" untuk variabel sql sebaris untuk kueri dan dengan demikian mengharapkan variabel tersebut dideklarasikan seperti dari skrip atau bagian dari deklarasi sebaris (pilih subkueri).
Anda perlu mengubah KEDUA instance parameter... baik dalam kueri, maupun sebagai instance command.Parameters.Add....
Juga, saya perhatikan, dan tidak yakin apakah itu atau tidak, tetapi dalam klausa WHERE Anda, Anda memiliki "kata sandi" (hanya satu 's') vs kata sandi (dua 's') Tidak tahu apakah disengaja atau tidak.
Satu hal TERAKHIR yang MUNGKIN membantu. Karena beberapa parameter cocok dengan nama kolom, saya sarankan untuk mengubah parameter sedikit saja dengan menambahkan sesuatu seperti "x" ke FORCE diferensiasi antara nama kolom dan parameter sebenarnya...
where... p.LoginID = ?xLoginID ...
dan di parameter perintah
objCommand.Parameters.AddWithValue("?xLoginID", loginID);