Java SQL为unsigned int准备的语句

时间:2012-02-28 21:38:33

标签: java sql prepared-statement

我想使用预准备语句插入一些unsigned int值。

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

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

3 个答案:

答案 0 :(得分:4)

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

  

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

因此请注意,它允许您设置一个大于2 ^ 32-1的值,然后由DB拒绝(希望;我想它可以包装)。

答案 1 :(得分:2)

要执行此操作,请使用将保存当前最大(无符号)值的下一个最小数据类型。对于整数而言会很长。然后,您可以丢弃高于整数的最大(无符号)值的任何内容。

post will shed some light

答案 2 :(得分:1)

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