当处理SQL Server数据库中的bigint值时,我应该在C#中使用什么?
这对应于 长整型 (或 Int64),即64位整数。
虽然如果数据库中的数字足够小,你意外地使用了 Int32 等类型也没关系。但是 Int64 绝对可以容纳它。
如果使用了较小的类型而需要完整大小时会出现的错误呢?堆栈溢出! 太棒了!
Int64
直接对应 BigInt
。
long
关键字是 System.Int64
的别名。 - Anon.我刚刚有一个脚本,返回了插入操作的主键并使用了
SELECT @@identity
我在使用 bigint 主键时,用 long 类型会出现类型转换错误,这也是我开始搜索的原因。至少在我的情况下,正确的答案是 select 语句返回的类型为 NUMERIC,即一个十进制类型。使用 long 将导致类型转换异常。
这就是要在多个谷歌搜索(甚至在 Stack Overflow 上)中检查答案的原因之一。
引用一位帮助过我的数据库管理员的话:
......BigInt 和 INT64 并不相同,尽管它们看起来很像。部分原因是 SQL 通常会将 Int/BigInt 转换为 Numeric 作为正常处理的一部分。所以当它转��� OLE 或 .NET 时,需要进行的转换是 NUMERIC 到 INT。
我们通常不注意,因为打印出来的值看起来是一样的。
long
类型或 Int64
进行操作。我认为相当于Int64。
int在SQL Maps中直接映射到int32,也称为原始类型,即C#中的int,而
bigint在Sql Server中直接映射到int64,也称为原始类型,即C#中的long
已定义从biginteger到integer的显式转换这里
我成功地使用Convert.ToInt64将从数据库返回的(bigint)值进行了转换。
例如:
var Id = Convert.ToInt64(identityAsTable.Rows[0].Field<object>(0));
对于大多数情况,它在c#中是长整型(int64)
int(64)或long数据类型等同于BigInt。