Mysql异常整数值不正确:'从asp.net web应用程序的列

本文关键字:net asp web 应用程序 整数 异常 不正确 Mysql | 更新日期: 2023-09-27 18:09:33

我试图从ASP更新使用mysql数据库创建的表。. NET网页。当从网页插入数据到表时mysqlexception:不正确的整数值:'@Age' for column Age at row 1此异常发生。

我尝试在查询中不使用单引号围绕列名,但在这种情况下也不工作年龄不能为空异常发生

下面是我使用的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();

我是初学者,有人能帮我解决这个问题吗?

Mysql异常整数值不正确:'从asp.net web应用程序的列

两个错误。

第一个:参数占位符不应该用单引号括起来。否则它们将变成字面值字符串,不再被识别

第二个: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...