Dwa błędy.
Pierwsza:symbol zastępczy parametrów nie powinien być ujęty w pojedyncze cudzysłowy. W przeciwnym razie stają się dosłownymi ciągami i nie są już rozpoznawane
Drugi:AddWithValue przyjmuje dwa parametry. Pierwsza to nazwa parametru, druga to wartość, a nie typ bazy danych.
MySqlCommand cmd = new MySqlCommand(@"Insert into personal(PAN,PName,Age)
values(@PAN,@PName,@Age)",con);
cmd.Parameters.AddWithValue("@PAN",panBox.Text);
cmd.Parameters.AddWithValue("@PName", nameBox.Text);
cmd.Parameters.AddWithValue("@Age",Convert.ToInt32(ageBox.Text));
cmd.ExecuteNonQuery();
Oczywiście istnieje ryzyko wyrzucenia wyjątku, jeśli ageBox
jest pusty. Nie znam twoich wymagań, ale jeśli pole Wiek musi być prawidłową liczbą, można dodać trochę sprawdzania błędów, aby zapobiec banalnym błędom.
int ageValue;
if(!Int32.TryParse(ageBox.Text, out ageValue))
{
MessageBox.Show("Please type a valid value for Age!");
return;
}
.... insert code follows...