c# - mysql异常错误整数值: '@column' for column from asp.net web应用程序

标签 c# mysql asp.net

我正在尝试从 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/

相关文章:

javascript - 如何改变asp控件的宽度/高度?

c# - Azure 指标从 MetricsClient 返回 0

c# - LINQ .OrderBy 创建嵌套套管

mysql - 搜索查询 - 邮政编码、公司名称或位置

mysql - 如何在 MariaDB 中进行类型转换

c# - 如何查询复数n :m relationship for getting an IEnumerable in C#

c# - 在 .NET Core 2.0 中使用 COM 对象

C# 属性.设置.默认

php - Ios-App 从 Liferay DB 获取数据

asp.net - 水平对齐两个输入文本框和一个按钮