我想使用预准备语句插入一些unsigned int值。
如果第二个参数高于2,147,483,647(Max Signed Int),setInt()会使用DataTruncation来打我,尽管我的基础表最多可以咀嚼4,294,967,295(Max Unsigned Int)
有没有setUnsignedInt()这样的东西?我应该使用setLong(),尽管该表设置为(INT(10)UNSIGNED)?
感谢
答案 0 :(得分:4)
是的,您应该使用setLong()
。你会注意到javadocs告诉你:
将指定参数设置为给定的Java long值。驱动程序在将数据发送到数据库时将其转换为SQL BIGINT值。
因此请注意,它允许您设置一个大于2 ^ 32-1的值,然后由DB拒绝(希望;我想它可以包装)。
答案 1 :(得分:2)
要执行此操作,请使用将保存当前最大(无符号)值的下一个最小数据类型。对于整数而言会很长。然后,您可以丢弃高于整数的最大(无符号)值的任何内容。
答案 2 :(得分:1)
通常,当您在Java中需要未签名的原语空间时,您只需要进入下一层的大小。在你的情况下,这是一个很长的。