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