在C#中,Int64不等于long吗?
我一直在使用SqlCeConnection在C#中使用SQL和数据库。我一直在使用ExecuteReader来读取读入Longs的记录ID的结果和BigInt值。
今天我一直在玩SQL语句,这些语句使用基于COUNT的语句('SELECT COUNT(*)FROM X')并且一直在使用ExecuteScalar来读取这些单值结果。
但是,我遇到了一个问题。我似乎无法将值存储到Long数据类型中,我一直在使用它。我可以将它们存储到Int64中。
我一直在使用BigInt作为记录ID来获取最大可能的记录数。
因此,BigInt 8字节是Int64。不是Long等于Int64,因为它们都是64位有符号整数?
因此,为什么我不能将Int64转换为Long?
long recordCount =0;
recordCount = (long)selectCommand.ExecuteScalar();
错误是:
指定演员表无效。
我可以将BigInt读成Long。这不成问题。
我无法读取SQL COUNT到long。
COUNT返回一个Int(Int32),所以问题实际上是将Int32转换为long。
没有找到相关结果
已邀请:
2 个回复
篮肥炼皖
是.NET中的
;它只是C#中的别名。您的问题是将返回值转换为
,除非我们知道您的查询返回的类型,否则我们不知道您为什么会收到错误。 SQL BigInt必须可转换为
。 如果是返回的COUNT(*),那么它是Int32。你需要使用
类:
屡倒雷图
编译到这个IL:
也就是说,它们似乎编译成相同的代码。