我的数据库列的类型为 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();
}
}
答案 0 :(得分:0)
Int32可以接受-2147483648和2147483647之间的值。您输入的电话号码可能超出此范围,这就是您收到此错误的原因。
建议:如您所说,您在数据库中使用nchar,请使用字符串数据类型来表示电话号码字段。或者,如果您坚持使用整数,则使用Int64数据类型。 :)