【问题标题】:Java SQL prepared statement for unsigned int用于 unsigned int 的 Java SQL 准备语句
【发布时间】:2012-02-28 21:38:33
【问题描述】:

我想使用准备好的语句插入一些无符号整数值。

如果第二个参数高于 2,147,483,647(Max Signed Int),setInt() 会用 DataTruncation 给我一巴掌,尽管我的基础表最多可以咀嚼 4,294,967,295(Max Unsigned Int)

有没有 setUnsignedInt() 这样的东西?尽管表设置为 (INT(10) UNSIGNED),但我应该使用 setLong() 吗?
谢谢

【问题讨论】:

    标签: java sql prepared-statement


    【解决方案1】:

    是的,您应该使用setLong()。您会注意到 javadocs 告诉您:

    将指定参数设置为给定的 Java long 值。驱动程序在将其发送到数据库时将其转换为 SQL BIGINT 值。

    所以请注意,它允许您设置一个大于 2^32-1 的值,然后数据库会拒绝该值(希望;我想它可以换行)。

    【讨论】:

      【解决方案2】:

      为此,您使用下一个最小的数据类型来保存当前的最大值(无符号)值。对于整数,这将是长的。然后,您可以丢弃大于 Integer 的最大(无符号)值的任何内容。

      这个post will shed some light

      【讨论】:

        【解决方案3】:

        通常,当您在 Java 中需要未签名原语的净空时,您只需进入下一层大小即可。在你的情况下,这很长。

        【讨论】:

          猜你喜欢
          • 2022-08-17
          • 1970-01-01
          • 2011-04-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-11-18
          • 1970-01-01
          相关资源
          最近更新 更多