【发布时间】:2011-01-07 23:36:30
【问题描述】:
在 C# 中处理一个值(对于 SQL Server 数据库来说是 bigint)时,我应该使用什么?
【问题讨论】:
标签: c# .net sql-server bigint
在 C# 中处理一个值(对于 SQL Server 数据库来说是 bigint)时,我应该使用什么?
【问题讨论】:
标签: c# .net sql-server bigint
我设法使用 Convert.ToInt64 转换了从数据库返回的 (bigint) 值。
即
var Id = Convert.ToInt64(identityAsTable.Rows[0].Field<object>(0));
【讨论】:
int(64) 或 long 数据类型等价于 BigInt。
【讨论】:
我刚刚有一个脚本返回插入的主键并使用了一个
SELECT @@identity
在我的 bigint 主键上,我使用 long 得到一个转换错误 - 这就是我开始这个搜索的原因。至少在我的情况下,正确的答案是该选择返回的类型是 NUMERIC ,它等于十进制类型。使用 long 会导致强制转换异常。
这是在多个 Google 搜索(甚至是 Stack Overflow!)中检查您的答案的原因之一。
引用帮助我的数据库管理员的话:
... BigInt 与 INT64 不同,无论它们看起来多么相似。部分原因是 SQL 会经常将 Int/BigInt 转换为 Numeric 作为正常处理的一部分。因此,当它转到 OLE 或 .NET 时,所需的转换是 NUMERIC 到 INT。
我们不会经常注意到,因为打印的值看起来是一样的。
【讨论】:
如果您在数据库表中使用 bigint,则可以在 C# 中使用 Long
【讨论】:
对于大多数情况,它在 c# 中是 long(int64)
【讨论】:
int 直接映射到 int32 也称为原始类型,即 C# 中的 int 而 Sql Server 中的
bigint 直接映射到 int64 也称为原始类型,即 C# 中的 long
如果定义了大整数到整数的显式转换here
【讨论】:
您可以使用long 类型或Int64
【讨论】:
对应于 long(或 Int64),一个 64 位整数。
尽管如果数据库中的数字恰好足够小,并且您不小心使用了 Int32 等,那么您会没事的。但是 Int64 肯定会持有它。
如果您使用较小的东西并且需要完整尺寸,您会得到什么错误? 堆栈溢出!耶!
【讨论】:
long 没有大写。
我正在处理要在 DataGridView 中显示的 bigint 数据类型,并使它像这样
something = (int)(Int64)data_reader[0];
【讨论】:
Int64 直接映射到BigInt。
【讨论】:
long 关键字是 System.Int64 的别名。
我认为等效的是 Int64
【讨论】:
使用长数据类型。
【讨论】: