我正在尝试从一个ASP.NET网页更新一个使用mysql数据库创建的表。当将数据从网页中插入到表时,mysqlexception :不正确的整数值:第1行中列年龄的“@ page”,就会发生这种异常。
在查询中,我尝试不使用列名周围的单引号,但在这种情况下,年龄不能为空异常也会发生。
下面是我正在使用的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();我是个初学者,有人能帮我解决这个问题吗?
发布于 2014-06-19 13:23:15
两个错误。
第一:参数占位符不应该用单引号括起来。否则,它们将变成文字字符串,不再被识别。
第二个参数: 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...https://stackoverflow.com/questions/24307566
复制相似问题