242

在 C# 中处理一个值时我应该使用什么,它是 SQL Server 数据库的 bigint?

4

12 回答 12

402

这对应于long(或Int64),一个 64 位整数。

尽管如果数据库中的数字恰好足够小,并且您不小心使用了 Int32 等,那么您会没事的。但是Int64肯定会持有它。

如果您使用较小的东西并且需要完整尺寸,您会得到什么错误?堆栈溢出!耶!

于 2010-01-21T22:44:56.570 回答
68

Int64直接映射到BigInt.

资源

于 2010-01-21T22:44:26.930 回答
14

我只有一个脚本,它返回插入的主键并使用

SELECT @@identity

在我的 bigint 主键上,我使用 long 得到一个转换错误 - 这就是我开始这个搜索的原因。至少在我的情况下,正确的答案是该选择返回的类型是 NUMERIC ,它等于十进制类型。使用 long 将导致强制转换异常。

这是在多个 Google 搜索(甚至在 Stack Overflow!)中检查您的答案的原因之一。

引用帮助我的数据库管理员的话:

... BigInt 与 INT64 不同,无论它们看起来多么相似。部分原因是 SQL 会经常将 Int/BigInt 转换为 Numeric 作为正常处理的一部分。因此,当它转到 OLE 或 .NET 时,所需的转换是 NUMERIC 到 INT。

我们不会经常注意到,因为打印的值看起来是一样的。

于 2010-09-20T19:10:57.853 回答
6

使用长数据类型。

于 2010-01-21T22:44:45.600 回答
6

您可以使用long类型或Int64

于 2015-07-08T17:59:00.170 回答
2

我认为等效的是 Int64

于 2010-01-21T22:44:50.993 回答
0

sql 中的int直接映射到int32也称为原始类型,即C#中的int

Sql Server 中的bigint直接映射到int64也称为原始类型,即C#中的long

如果此处定义了从大整数到整数的显式转换

于 2016-06-14T07:18:31.707 回答
-1

我设法使用 Convert.ToInt64 转换从数据库返回的 (bigint) 值。

IE

var Id = Convert.ToInt64(identityAsTable.Rows[0].Field<object>(0));
于 2021-09-01T15:28:26.680 回答
-1

int(64) 或 long 数据类型等价于 BigInt。

于 2021-02-22T09:11:38.527 回答
-1

对于大多数情况,它在 c# 中是 long(int64)

于 2020-02-04T10:01:22.073 回答
-1

如果您在数据库表中使用bigint ,则可以在 C#中使用Long

于 2020-05-18T14:26:04.813 回答
-4

我正在处理要在 DataGridView 中显示的 bigint 数据类型,并使它像这样

something = (int)(Int64)data_reader[0];
于 2014-08-11T14:57:29.177 回答