将数据类型 varchar 转换为 bigint 时出错,求帮看代码

publicpartialclassFrontDesk_Login_UserRegister:System.Web.UI.Page{DataConmyCon=newDat... public partial class FrontDesk_Login_UserRegister : System.Web.UI.Page
{
DataCon myCon = new DataCon();
DataOperate sqlBind = new DataOperate();
protected void Page_Load(object sender, EventArgs e)
{
}
protected void btnRegister_Click(object sender, EventArgs e)
{
string sqltest = "select * from tb_User where UserID='" + this.txtUserID.Text + "'";
SqlConnection sqlconn = myCon.getCon();
sqlconn.Open();
SqlCommand sqlcom = new SqlCommand(sqltest, sqlconn);
SqlDataReader read = sqlcom.ExecuteReader();
read.Read();
if (read.HasRows)
{
if (this.txtUserID.Text.Trim() == read["UserID"].ToString().Trim())
{
Response.Write("<script language='javascript'>alert('该用户ID已经注册过');localtion='UserRegister.aspx'</script>");
return;
}
}
string sqlstr = "insert into tb_User "
+ "(UserID,UserLoginName,UserSex,UserPwd,UserName,"
+ "UserQuePwd,UserAnsPwd,UserTel,UserEmail,UserAddress,UserPostCode,UserQQ)"
+ "values('" + txtUserID.Text + "','" + txtLoginName.Text + "','" + ddlSex.Text
+ "','" + txtPwd.Text + "','" + txtTName.Text + "','" + txtQuePwd.Text
+ "','" + txtAnsPwd.Text + "','" + txtTel.Text + "','" + txtEmail.Text
+ "','" + txtAddress.Text + "','" + txtPostCode.Text + "','" + txtQQ.Text + "')";
sqlBind.DataCom(sqlstr);
Response.Redirect("SuccessReg.aspx");
}

将数据类型 varchar 转换为 bigint 时出错。说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.Data.SqlClient.SqlException: 将数据类型 varchar 转换为 bigint 时出错。
源错误:
行 67: SqlCommand sqlcom = new SqlCommand(sqlstr, sqlconn);
行 68: SqlDataReader read = sqlcom.ExecuteReader();
行 69: read.Read();
行 70: if (read.HasRows)
行 71: {
源文件: f:\BBS\FrontDesk\Login\UserRegister.aspx.cs 行: 69
展开
 我来答
精神小伙喵
推荐于2017-11-25 · TA获得超过684个赞
知道小有建树答主
回答量:746
采纳率:50%
帮助的人:728万
展开全部
string sqltest = "select * from tb_User where UserID='" + this.txtUserID.Text + "'";

如果你的UserID字段是bigint类型的,那么 this.txtUserID.Text的值只能包含数字,
我刚测试了一下,
select * from userinfo where userid='111a'
select * from userinfo where userid='111'
第一条就会报你说的异常
处理方法是把userid改为varchar类型的
如果你的需求就是bigint的那么你在输入txtUserID的时候只能输入数字,
bigint类型的可以不加单引号
select * from userinfo where userid=111
吴昊的博客
2013-04-23 · 超过10用户采纳过TA的回答
知道答主
回答量:58
采纳率:0%
帮助的人:35.6万
展开全部
建议楼主这样做:userID是数据库自动生成的。loginName是用户填写。当注册时select loginName是否存在,userID仅作为外键主键。而loginName的类型你可以定义为vchar nvachar char 都可以。不过要在输入时js验证是否符合自己的要求。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
593758685
2013-04-23 · TA获得超过276个赞
知道小有建树答主
回答量:377
采纳率:100%
帮助的人:230万
展开全部
if (read.HasRows)里面不需要再判断了。还有你的UserID是什么类型的?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式