我搜索了这个问题的答案,只找到了模糊的答案。这是问题所在:我在 MySQL 中有一个示例表:mytable time Timestamp data BigInt(20) unsigned
选择数据字段以便它可以接受 2^64 最大值:18446744073709551616(20 位,因此 BigInt(20))。
我有一个包含无符号 64 位整数的 csv 文件。
现在我正在使用 Java 和 JDBC 插入这些数据并遇到问题,因为 Java 没有无符号长。所以我尝试只传递字符串 - 但它失败了。
st = conn.prepareStatement("INSERT INTO pawan_table (mytime, data) VALUES(?, ?)");
st.setTimestamp(1, new Timestamp(86400000+i*1000));
st.setString(2, "18446744073709551616");
st.execute();
我还尝试了 Java 中的 BigInteger 类 - 但 JDBC 没有采用该类型的方法。我只能将 BigInteger 转换为已签名的“long”,这不是我想要的。例如:
BigInteger bi = new BigInteger(string_from_csv_file);
st.setLong(2, bi.longValue());
有趣的是,MySQL Workbench 可以插入这些数据——但它是用 c# 编写的!我需要用Java编写我的代码!
Java 程序员如何在 MySQL BigInt(20) 列中插入无符号 64 位数字?