【问题标题】:What is the equivalent of bigint in C#?C# 中 bigint 的等价物是什么?
【发布时间】:2011-01-07 23:36:30
【问题描述】:

在 C# 中处理一个值(对于 SQL Server 数据库来说是 bigint)时,我应该使用什么?

【问题讨论】:

    标签: c# .net sql-server bigint


    【解决方案1】:

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

    var Id = Convert.ToInt64(identityAsTable.Rows[0].Field<object>(0));
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 这似乎只是对现有答案的重复。
      【解决方案3】:

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

      SELECT @@identity
      

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

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

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

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

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

      【讨论】:

      • 感谢您的数字提示.. 帮了我大忙!
      • 您遇到了转换错误,因为 SCOPE_IDENTITY 和 @@IDENTITY 返回 NUMERIC(38, 0),而不是因为您的 BigInt PK 不适合 C# Int64。换句话说,BigInt 与 Int64 相同,但通过 SCOPE_IDENTITY 或 @@IDENTITY 返回的 BigInt 值可能会上转换为 NUMERIC(38, 0)。
      • 谢谢丹。仅供参考,SQL Azure (RTM) 仍在发生 - 12.0.2000.8 和 .NET v 4.5
      【解决方案4】:

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

      【讨论】:

      • 这似乎只是对现有答案的重复。
      【解决方案5】:

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

      【讨论】:

      • 这似乎只是对现有答案的重复。
      【解决方案6】:
      sql 中的

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

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

      如果定义了大整数到整数的显式转换here

      【讨论】:

        【解决方案7】:

        您可以使用long 类型或Int64

        【讨论】:

          【解决方案8】:

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

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

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

          【讨论】:

          【解决方案9】:

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

          something = (int)(Int64)data_reader[0];
          

          【讨论】:

            【解决方案10】:

            Int64 直接映射到BigInt

            Source

            【讨论】:

            • 是 Int64 的长别称 /
            • 是的。 long 关键字是 System.Int64 的别名。
            【解决方案11】:

            我认为等效的是 Int64

            【讨论】:

              【解决方案12】:

              使用长数据类型。

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2014-05-08
                • 2023-03-30
                • 2010-09-17
                • 2011-07-26
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多