C#中的bigint等于什么?


Answers:


354

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

尽管如果数据库中的数字恰好足够小,而您不小心使用了Int32等,则可以。但是Int64肯定会保留它。

如果使用较小的东西并且需要全尺寸,则会出现错误?堆栈溢出!好极了!


100
确定不是整数溢出吗?
luqui 2012年

6
有关更多数据类型的良好参考:msdn.microsoft.com/zh-cn/library/system.data.sqldbtype.aspx
MacGyver,

3
在C#long中不大写。
肖恩·科瓦奇

将datetime转换为long?
Kiquenet


12

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

SELECT @@identity

在我的bigint主键上,使用long时出现强制转换错误-这就是为什么我开始此搜索的原因。至少在我看来,正确答案是该选择返回的类型为NUMERIC,它等于十进制类型。使用long将导致强制转换异常。

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

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

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

我们并不经常注意到,因为印刷价值看起来是一样的。”


谢谢你的数字提示。.只是帮助了我很多时间!
jpshook 2011年

8
您发生了强制转换错误,因为SCOPE_IDENTITY和@@ IDENTITY返回NUMERIC(38,0),而不是因为BigInt PK不适合C#Int64。换句话说,BigInt有一样的Int64,但BIGINT值的通过SCOPE_IDENTITY退回或@@ IDENTITY可以是上变频到NUMERIC(38,0)。
Dan Hermann

谢谢丹。仅供参考,SQL Azure(RTM)-12.0.2000.8&.NET v 4.5仍在发生
Gunnar


6

您可以使用longtype或Int64



1

INT在SQL直接映射到INT32还知道作为一个基本类型,即INTC# ,而

BIGINT在SQL服务器直接映射到Int64的,即也知道作为一个基本类型C#

如果要BigInteger的整数已定义的显式转换这里




-3

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

something = (int)(Int64)data_reader[0];
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.