c#里 Convert.ToInt32 提示越界了怎么改

protectedvoidCustomValidator1_ServerValidate(objectsource,ServerValidateEventArgsargs... protected void CustomValidator1_ServerValidate(object source, ServerValidateEventArgs args)
{
string userid = args.Value;
cn = sqldata.createcon();
cn.Open();
strsql = "select count(*) from users where userid='" + userid + "'";
cmd = new SqlCommand (strsql, cn);
int count = Convert.ToInt32(cmd.ExecuteScalar()); //--好像是传递学号位数的
if (count > 0)
{
args.IsValid = false;
}
else
{
args.IsValid = true;
}
cn.Close();
}

运行vb的时候显示的错误
int count = Convert.ToInt32(cmd.ExecuteScalar()); 说这个越界了

我输入的是一个学号,数据库里设置为int型的,当我输入15位以下的数就是对的,输入15位就提示越界了,但是我要求输15位数,请问要怎么改?改数据库里的int还是改代码?
展开
 我来答
小品剧本吧
2011-12-22 · TA获得超过1124个赞
知道答主
回答量:72
采纳率:0%
帮助的人:51.7万
展开全部
是什么数据库 SQL 2008吗? 改不了结构 设置里有个选项 把勾去掉 就可以了 具体什么不记得了 你百度一下 不过你这个 直接改这句 decimal count = Convert.decimal(cmd.ExecuteScalar()); 应该就可以了哦 因为是输出错误 而不是录入错误
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sniper2003
2011-12-22 · TA获得超过1882个赞
知道小有建树答主
回答量:775
采纳率:100%
帮助的人:661万
展开全部
什么类型的不重要,重要的ExecuteScalar方法的返回值。好好看看这个方法的返回说明,返回的数据是结果集中第一列第一行的数据。你要转换的也是这行的数据!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
gutangsuqian
2011-12-22
知道答主
回答量:21
采纳率:0%
帮助的人:14.1万
展开全部
其实最好是从2边都下手,学号既然上了15位,设置为Int类型就表明当初数据库设计没有考虑好。建议重新修改,如果数据库修改,那程序当然得跟着变了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2011-12-22
展开全部
超过int32最大范围了 用字符串不就行了么 看看 cmd.executescaler 的 返回值 是什么 要么就 convert.toint64
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2011-12-22
展开全部
试一下改成ToInt64 int类型也改为longint
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式