Dois erros.
Primeiro:O espaço reservado para parâmetros não deve ser colocado entre aspas simples. Caso contrário, eles se tornam strings literais e não são mais reconhecidos
Segundo:AddWithValue recebe dois parâmetros. O primeiro é o nome do parâmetro, o segundo é o valor e não o tipo de banco de dados.
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();
Claro que isso corre o risco de lançar uma exceção se o
ageBox
está vazia. Não conheço seus requisitos, mas se o campo Idade precisar ser um número válido, um pouco de verificação de erros poderá ser adicionado para evitar erros banais. int ageValue;
if(!Int32.TryParse(ageBox.Text, out ageValue))
{
MessageBox.Show("Please type a valid value for Age!");
return;
}
.... insert code follows...