【发布时间】:2012-07-08 19:50:21
【问题描述】:
我的问题是:如何在 MySQL DB 中将 BigInteger 变量插入为 BIGINT?在我看来Java中的preparedstatement对象没有方法支持这种类型?
【问题讨论】:
-
您可以根据您的数据库限制使用十进制/数字值:stackoverflow.com/questions/3052772/…
我的问题是:如何在 MySQL DB 中将 BigInteger 变量插入为 BIGINT?在我看来Java中的preparedstatement对象没有方法支持这种类型?
【问题讨论】:
根据this documentation,BIGINT 在 MySQL 中只是一个 64 位整数 - 所以使用setLong。这对于 MySQL 中的签名 BIGINT 类型应该没问题。不幸的是,Java 没有“无符号长”类型,因此如果您的数据库中有一个无符号 BIGINT,这可能会更棘手 - 您可以尝试仍然使用setLong,看看它是否只是溢出以“自然”的方式。
【讨论】:
preparedStmt.setLong (myIndex, myBigIntNo);。错误含义是Java由于数据类型冲突而无法插入值(我的数字在Java中定义为BigInteger,DB中的字段定义为BIGINT)。目前,我通过将数字从 BigInt 转换为 Byte[] 并将其作为 Blob 存储在 MySQL DB 中解决了这个问题。一旦我确保它工作正常,将很快发布解决方案。我还在测试它。