首页 新闻 会员 周边 捐助

C# ExecuteScalar()方法的返回值

0
悬赏园豆:10 [已解决问题] 解决于 2013-03-08 12:01

cmd.ExecuteScalar()返回值转换为long失败?为什么转换为int类型可以,long类型失败?假如cmd.ExecuteScalar()返回的值转化为数值大于int类型的范围怎么办,如何将该对象转换成long类型?

< >
分享
最佳答案
0

long.Parse(cmd.ExecuteScalar().ToString())

收获园豆:4
飞来飞去 | 老鸟四级 |园豆:2057 | 2013-03-05 11:05

谢谢你的答案

拾梦小侠ด้้้ | 园豆:713 (小虾三级) | 2013-03-07 10:18
其他回答(3)
0

自己解决了!大家看看有什么更好的建议?

string sumcountstr = (string)cmd.ExecuteScalar();
sumcount= Convert.ToInt64(sumcountstr);

拾梦小侠ด้้้ | 园豆:713 (小虾三级) | 2013-03-05 10:44
0

long _value=0;

long.TryParse(cmd.ExecuteScalar().ToString(),out _value);

收获园豆:4
wilson zhao | 园豆:228 (菜鸟二级) | 2013-03-05 18:04

谢谢你的回答

支持(0) 反对(0) 拾梦小侠ด้้้ | 园豆:713 (小虾三级) | 2013-03-07 10:19
-1

MSDN解释过:ExecuteScalar():执行查询,并返回查询所返回的结果集中第一行的第一列。忽略其他列或行。  所以我实在不知道你要转换为long类型干嘛!

收获园豆:2
何以解忧唯有撸码 | 园豆:37 (初学一级) | 2013-03-07 10:04

当你想查一个很大的表的条数的时候,你是怎么做的?大家共享下自己的想法。这是我的想法,当表的条数超过int的值域的时候不转换成long类型,在int类型值域循环,那不是功亏一篑吗?把你的想法也晒晒吧!

支持(0) 反对(0) 拾梦小侠ด้้้ | 园豆:713 (小虾三级) | 2013-03-07 10:09

@阿 牛: 我的想法:1、int 支持32位 ,已经超过3个10亿数据量了, 一般的大项目绝对够用了(就算数据大的离谱,应该也不会全部查询出来)。 2、 public override Object ExecuteScalar ()。返回值是Object ,如果真像你说的那样超过int的范围,可以进行强制转换为int64

支持(0) 反对(0) 何以解忧唯有撸码 | 园豆:37 (初学一级) | 2013-03-07 14:26

@Stephen.Kang: 呵呵,能超过int32是完全有可能的,int类型的值域并没有是你所的3个10亿那么大吧,应该是65536吧?不知道是我错的了还是你错了;第二如果已经超出范围的int类型范围的数值再转换为int64是没有任何意义的。

支持(0) 反对(0) 拾梦小侠ด้้้ | 园豆:713 (小虾三级) | 2013-03-08 08:43

@阿 牛: 噢,抱歉,值域是我搞错了,不好意思。

支持(0) 反对(0) 拾梦小侠ด้้้ | 园豆:713 (小虾三级) | 2013-03-08 08:55
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册