You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java环境下无法向SQLite插入大Long值的问题求助

解决SQLite JDBC插入大Long值失败的问题

我之前也碰到过类似的坑,用旧版sqlitejdbc-v056.jar处理大64位Long值时确实会出现插入失败的情况,原因主要出在旧驱动对JDBC类型的处理逻辑上,下面给你几个可行的解决方案:

方案1:升级SQLite JDBC驱动

sqlitejdbc-v056.jar是比较老旧的版本了,它对JDBC的setLong方法的实现存在局限,无法正确处理超出32位整数范围的大Long值(比如你提到的1522746908000L,这个值已经远大于2^31-1)。

建议替换成维护更活跃的Xerial SQLite JDBC驱动(现在的groupId是org.xerial),新版本的驱动完全支持SQLite的64位INTEGER类型,setLong方法可以正常处理这类大值。记得移除旧的sqlitejdbc-v056.jar,避免类冲突。

方案2:改用setObject方法替代setLong

如果暂时无法升级驱动,可以尝试换一种参数绑定方式,用setObject让驱动自动处理类型转换:

long tsMills = 1522746908000L;
preparedStatement.setObject(parameterIndex, tsMills);

这种方式可以绕过旧驱动对setLong的错误处理逻辑,让SQLite正确识别并存储64位整数。

额外注意事项

  • 确认你的表结构中目标列的类型确实是INTEGER(SQLite的INTEGER是原生支持64位的,而INT虽然兼容,但最好明确使用INTEGER来避免歧义);
  • 插入后可以通过SQL语句SELECT typeof(your_column) FROM your_table验证存储的类型是否为integer,确保数据正确写入。

内容的提问来源于stack exchange,提问作者Alexei

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:09:32