java 数据库字段抽取遇到的坑
一个字段设置成了无符号类型 " BIGINT UNSIGNED",(原来同事设置了一个字段是无符号的,我之前都是用的有符号的)
// 字段长度
Integer fieldLength = Integer.valueOf(rs.getString("COLUMN_SIZE"));
// 字段类型
String dbType = rs.getString("TYPE_NAME");
if (dbType.contains(" UNSIGNED")) {undefined
// 无符号
dbType = dbType.replace(" UNSIGNED", "");
} else {undefined
// 有符号
if (isNumberType(dbType)) {undefined
// 数字类型
fieldLength = fieldLength + 1;
}
}
java.sql.Types定义了常用数据库(MySQL、Oracle、DB2等)所用到的数据类型,官名也叫JDBC类型。每个数据库产品的数据类型定义各不相同,但都有JDBC类型与之对应,如MySQL的BIGINT-->JDBC的BIGINT。
而每个JDBC类型,都有默认的Java类型与之对应,即ResultSet.getObject()返回Object的具体类型,如JDBC的BIGINT-->Java的java.lang.Long;JDBC的BIGINT UNSIGNED-->Java的 java.math.BigInteger。
我们可以通过ResultSet.getMetaData().getColumnTypeName(columnIndex)获取字段的JDBC类型,通过ResultSet.getMetaData().getColumnClassName(columnIndex)获取字段的Java类型。
主键和无符号会补个0,就是20
mysql5及之前的版本使用的是旧版驱动"com.mysql.jdbc.Driver",
mysql6以及之后的版本需要更新到新版驱动,对应的Driver是"com.mysql.cj.jdbc.Driver"
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· NetPad:一个.NET开源、跨平台的C#编辑器
· PowerShell开发游戏 · 打蜜蜂