JDBC连接Oracle获取数据时,有时可能报 java.sql.SQLException: 不支持的字符集 (在类路径中添加 orai18n.jar): ZHS16GBK ……

导致的原因是Jar运行环境和Oracle返回的字符格式不一致,报错建议添加“orai18n.jar”

有部分大佬寻求修改数据库字符集的方式,然而部分客户数据库不容修改,丢下的问题只能开发来补坑,程序兼容性就至关重要了!

以前同事代码:

while (rs.next()) {
    ResultSetMetaData metaData = rs.getMetaData();
    int colN = metaData.getColumnCount();
    Map<String, Object> mapRS = new LinkedHashMap<String, Object>();
    for (int i = 1; i <= colN; i++) {
        String columnName = metaData.getColumnLabel(i).toLowerCase();
        Object value = null;
        int columnType = metaData.getColumnType(i);
        if (columnType == 93) {
            value = rs.getTimestamp(columnName);
        } else {
            if (columnType == 2005) {
                value = extractClobString(rs, columnName);
            } else{
                value = rs.getObject(columnName);
            }
        }
        mapRS.put(columnName, value);
    }
    list.add(mapRS);
}

结果一直获取不到数据,试了各种办法都没成功(项目没有使用MAVEN,普通java项目没问题,可一部署到致远环境,没有任何效果),回想自己以前连oracle也没这么麻烦(代码不是自己写的,看着头疼),可能技术比较老了,没有这么多花里胡哨,就改了一个地方完美取值(rs.getObject(columnName); --> rs.getObject(i);)jar包都不需要了

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐