首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysql异常不正确的整数值:“@ column”表示来自asp.net web应用程序的列

问mysql异常不正确的整数值:“@ column”表示来自asp.net web应用程序的列
EN

Stack Overflow用户
提问于 2014-06-19 13:16:04
回答 1查看 1.7K关注 0票数 1

我正在尝试从一个ASP.NET网页更新一个使用mysql数据库创建的表。当将数据从网页中插入到表时,mysqlexception :不正确的整数值:第1行中列年龄的“@ page”,就会发生这种异常。

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

下面是我正在使用的DML查询的代码片段:

代码语言:javascript
复制
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();

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-19 13:23:15

两个错误。

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

第二个参数: AddWithValue采用两个参数。第一个是参数的名称,第二个是值而不是数据库类型。

代码语言:javascript
复制
  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是空的,这就有抛出异常的风险。我不知道您的需求,但是如果年龄字段必须是一个有效的数字,那么可以添加一些错误检查来防止普通的错误。

代码语言:javascript
复制
 int ageValue;
 if(!Int32.TryParse(ageBox.Text, out ageValue))
 {
     MessageBox.Show("Please type a valid value for Age!");
     return;
 }
 .... insert code follows...
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24307566

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档