Java.sql.ARRAY转换为ArrayList<String[]>的OracleCallableStatement。

3

我从Java中的Oracle SQL获得了一个ARRAY,并将其写入java.sql.ARRAY。这个数组是属于OBJECTVARRAY类型。我该如何将此类型转换为ArrayList

1个回答

5
假设您确实获得了一个 String[] 数组,您应该能够使用类似以下的方法 -
public static List<String[]> getList(ResultSet rs) throws IOException, SQLException {
    List<String[]> al = new ArrayList<String[]>();
    java.sql.Array z = rs.getArray("my_array_column");
    for (Object obj : (Object[])z.getArray()) {
        try {
            String [] arr = (String[]) obj;
            al.add(arr);
        } catch (ClassCastException e) {
            System.out.println("Object is not a String[]");
            e.printStackTrace();
        }
    }
    return al;
}

如果我使用 ResultSet 就可以正常工作,但我正在使用 JDBCOracleCallableStatement,并且当我将 ARRAY 转换为 Object 时,它是可以的,但是当我尝试将其转换为字符串时,我会收到以下错误信息 java.lang.ClassCastException: oracle.sql.STRUCT cannot be cast to [Ljava.lang.String; - user2993505
请在您的问题中具体说明。现在,您所说的“转换”是指什么?那个异常是由于无效的“强制转换”,而不是转换。 - Elliott Frisch

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接