Oracle JDBC 读取 LONG 字段,报“流已被关闭”

查看其他博客说是:这应该算是Oracle的bug,为了弥补这个问题,Oracle给我们的建议是:在结果集处理时,要先把LONG字段读取掉,再去读其他字段。

意思是:我们必须第一个获取long字段的数据,再获取其他类型字段的数据,

如果数据有多行:

第一行:第一个获取long类型字段再获取其他类型字段,第二行:第一个获取long类型字段再获取其他类型字段

这种方式也不行,因为在第二行,获取long类型字段时前面获取的是其他类型的字段

所以我们只能先获取所有行的long类型字段,然后ResultSet.beforeFirst()回到第一行,在获取其他类型字段数据。

最后把两部分数据合并。

示例:

ResultSetMetaData data = rs.getMetaData();
//首先获取到long类型字段所在位置
List longIndex = new ArrayList ;
for(int i = 0; i < data.getColumnCount(); i++){
    String columnTypeName = data.getColumnTypeName(i);
	if(columnTypeName.equalsTgnoreCase("LONG")){
	    lo

你可能感兴趣的:(#,Oracle,long字段)