当我使用字符串时更新行,但在Integer时不行

时间:2016-03-18 18:00:52

标签: c# sql oledb

我正在使用从Textboxes获取的数据更新访问数据库。如果我清除一个带字符串的文本框,那么更新工作正常,但是如果我清除一个带有整数的文本框,我会收到此错误信息

  

无法将参数值从String转换为Int32

这是我的代码:

 cmd.Parameters.Add("@inOrOut", OleDbType.VarWChar).Value = tbPatientStatus.Text;
 cmd.Parameters.Add("@BedID", OleDbType.Integer).Value = tbPatientBedID.Text;

从下面的评论中我试过这个没有成功

if (string.IsNullOrEmpty(tbPatientBedID.Text))
{
  cmd.Parameters.Add("@BedID", OleDbType.Integer).Value = 0;
}
else
{
  cmd.Parameters.Add("@BedID", OleDbType.Integer).Value = tbPatientBedID.Text;
}

2 个答案:

答案 0 :(得分:0)

  int? BedId = null;
  int m_BedID = 0;
  if(Int32.TryParse(tbPatientBedID.Text.Trim(), out m_BedID))
  {
     BedId = m_BedID;
  }      

  cmd.Parameters.Add("@inOrOut", OleDbType.VarWChar).Value = tbPatientStatus.Text;
  cmd.Parameters.Add("@BedID", OleDbType.Integer).Value = BedID;

添加参数类型OleDbType.Integer时,提供的值类型也应为integer ..

答案 1 :(得分:0)

使用tryparse获取int值的小例子。

        int value;
        if !(int.TryParse(tbPatientBedID.Text, out value))
            value = 0;

        cmd.Parameters.Add("@BedID", OleDbType.Integer).Value = value;