2つのエラー。
1つ目:パラメーターのプレースホルダーは一重引用符で囲まないでください。そうしないと、リテラル文字列になり、認識されなくなります
2つ目:AddWithValueは2つのパラメーターを取ります。 1つ目はパラメーターの名前で、2つ目はデータベースタイプではなく値です。
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();
もちろん、ageBox
の場合、これは例外をスローするリスクがあります 空です。要件はわかりませんが、Ageフィールドが有効な数値である必要がある場合は、平凡なエラーを防ぐためにエラーチェックを少し追加することができます。
int ageValue;
if(!Int32.TryParse(ageBox.Text, out ageValue))
{
MessageBox.Show("Please type a valid value for Age!");
return;
}
.... insert code follows...