我正在尝试从 ASP.NET 网页更新使用 mysql 数据库创建的表。从网页向表中插入数据时 mysqlexception:错误的整数值:第 1 行 Age 列的“@Age”发生此异常。
我尝试不在查询中的列名周围使用单引号,但在这种情况下也不起作用发生年龄不能为空异常
这是我正在使用的 DML 查询的代码片段:
MySqlCommand cmd = new MySqlCommand("Insert into personal(PAN,PName,Age)values('@PAN','@PName','@Age')",con);
cmd.Parameters.AddWithValue("@PAN",SqlDbType.VarChar).Value= panBox.Text;
cmd.Parameters.AddWithValue("@PName", SqlDbType.VarChar).Value=nameBox.Text;
cmd.Parameters.AddWithValue("@Age",MySqlDbType.Int32).Value=Convert.ToInt32(ageBox.Text);
cmd.ExecuteNonQuery();
cmd.Dispose();
我是初学者,有人可以帮助我解决这个问题吗?
最佳答案
两个错误。
第一个:参数占位符不应括在单引号中。否则它们会变成文字字符串并且不再被识别
第二个:AddWithValue 有两个参数。第一个是参数的名称,第二个是值而不是数据库类型。
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
为空,则有抛出异常的风险。我不知道您的要求,但如果年龄字段需要是有效的数字,那么可以添加一些错误检查以防止平庸的错误。
int ageValue;
if(!Int32.TryParse(ageBox.Text, out ageValue))
{
MessageBox.Show("Please type a valid value for Age!");
return;
}
.... insert code follows...
关于c# - mysql异常错误整数值: '@column' for column from asp.net web应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24307566/