cmd.ExecuteScalar()返回值转换为long失败?为什么转换为int类型可以,long类型失败?假如cmd.ExecuteScalar()返回的值转化为数值大于int类型的范围怎么办,如何将该对象转换成long类型?
long.Parse(cmd.ExecuteScalar().ToString())
谢谢你的答案
自己解决了!大家看看有什么更好的建议?
string sumcountstr = (string)cmd.ExecuteScalar();
sumcount= Convert.ToInt64(sumcountstr);
long _value=0;
long.TryParse(cmd.ExecuteScalar().ToString(),out _value);
谢谢你的回答
MSDN解释过:ExecuteScalar():执行查询,并返回查询所返回的结果集中第一行的第一列。忽略其他列或行。 所以我实在不知道你要转换为long类型干嘛!
当你想查一个很大的表的条数的时候,你是怎么做的?大家共享下自己的想法。这是我的想法,当表的条数超过int的值域的时候不转换成long类型,在int类型值域循环,那不是功亏一篑吗?把你的想法也晒晒吧!
@阿 牛: 我的想法:1、int 支持32位 ,已经超过3个10亿数据量了, 一般的大项目绝对够用了(就算数据大的离谱,应该也不会全部查询出来)。 2、 public override Object ExecuteScalar ()。返回值是Object ,如果真像你说的那样超过int的范围,可以进行强制转换为int64
@Stephen.Kang: 呵呵,能超过int32是完全有可能的,int类型的值域并没有是你所的3个10亿那么大吧,应该是65536吧?不知道是我错的了还是你错了;第二如果已经超出范围的int类型范围的数值再转换为int64是没有任何意义的。
@阿 牛: 噢,抱歉,值域是我搞错了,不好意思。