例外:对于asp.net中的Int32,值太大或太小?

时间:2017-01-02 19:01:47

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

我的数据库列的类型为 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();
    }
}

1 个答案:

答案 0 :(得分:0)

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

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