【问题标题】:Exception:Value was either too large or too small for an Int32 in asp.net?异常:对于 asp.net 中的 Int32,值是太大还是太小?
【发布时间】:2017-05-16 20:51:39
【问题描述】:

我的数据库列属于 bigint 类型,并且具有电话号码的值。它在按钮单击事件上显示错误。错误在这一行:

_bal.phone = Convert.ToInt32(txtphone.Text);

为什么会这样?

protected void btnsave_Click(object sender, EventArgs e)
{

    _bal.name = txtname.Text;
    _bal.age = Convert.ToInt32(txtage.Text);
    _bal.email = txtemail.Text;
    _bal.password = txtpassword.Text;
    _bal.phone = Convert.ToInt32(txtphone.Text);




    if (btnsave.Text == "SAVE")
    {
        _bal.emp_insert();
    }
    else if (btnsave.Text == "UPDATE")
    {
        _bal.Lid = int.Parse(ViewState["Loginid"].ToString());
        _bal.emp_update();
    }

    fill_grd();
}

protected void grd_RowCommand(object sender, GridViewCommandEventArgs e)
{
    _bal.Lid = int.Parse(e.CommandArgument.ToString());
    if (e.CommandName == "editing")
    {
        DataSet ds = new DataSet();
        ds = _bal.emp_edit();
        if (ds.Tables[0].Rows.Count > 0)
        {
            txtname.Text = ds.Tables[0].Rows[0]["name"].ToString();
            txtage.Text = ds.Tables[0].Rows[0]["age"].ToString();
            txtemail.Text = ds.Tables[0].Rows[0]["email"].ToString();
            txtpassword.Text = ds.Tables[0].Rows[0]["password"].ToString();
            txtphone.Text=ds.Tables[0].Rows[0]["phone"].ToString();
        }
        btnsave.Text = "UPDATE";
        ViewState["Loginid"] = e.CommandArgument.ToString();
    }

    else if (e.CommandName == "deleting")
    {
        _bal.emp_delete();
        fill_grd();
    }
}

【问题讨论】:

  • >int 类型表示带符号的 32 位整数,其值介于 –2147483648 和 2147483647 之间。
  • 无法解决error.plz帮助
  • 如果输入的电话号码超过最大值,应该抛出异常。
  • 我是新手,请您帮忙
  • 它工作正常。

标签: c# asp.net sql-server bigint


【解决方案1】:

Int32 可以接受介于 –2147483648 和 2147483647 之间的值。您输入的电话号码可能超出此范围,这就是您收到此错误的原因。

建议:如您所说,您在数据库中使用的是 nchar,请使用字符串数据类型来表示电话号码字段。或者,如果您坚持使用整数,则使用 Int64 数据类型。 :)

【讨论】:

  • nchar 可以保存“文本”数据,他只需要最大化它的长度。加; DB 中没有 stringinteger 数据类型
  • 是的!这是正确的。我建议在应用转换“Convert.ToInt32(txtphone.Text);”的 c# 中使用字符串或整数(long)。谢谢
  • 如果他这样做了,如果他输入的数字超过10位,就会抛出异常。
猜你喜欢
  • 2013-12-18
  • 1970-01-01
  • 2011-09-14
  • 2017-06-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-09
相关资源
最近更新 更多