我有一个程序,我试图从oracle表中检索不同的数据类型,并将该行转换为MD5哈希。
ByteArrayOutputStream sqlResultSetRow = new ByteArrayOutputStream();
ByteArrayOutputStream sqlResultSetOut = new ByteArrayOutputStream(); switch (columnType) {
case Types.NUMERIC:
String integerValue = Integer.toString(rs.getInt(col));
if(!rs.wasNull()){
sqlResultSetRow.write(integerValue.getBytes("UTF-8"), 0, integerValue.length());
}
break;
case Types.FLOAT:
String floatValue = Float.toString(rs.getFloat(col));
if(!rs.wasNull()){
sqlResultSetRow.write(floatValue.getBytes("UTF-8"), 0, floatValue.length());
}
break;
case Types.CLOB:
InputStream ins = rs.getBinaryStream(col);
if(!rs.wasNull()){
sqlResultSetRow.write(getCLOBValue(ins));
}
break;
sqlResultSetRow.writeTo(sqlResultSetOut); ComputeLNMD5Hash(new ByteArrayInputStream(sqlResultSetOut.toByteArray()))
当我从表中检索XML类型时,我得到一个SYS.xmltype而不是Types.SQLXML。它们之间的区别是什么?如何将SYS.xmltype转换为Byte [],这样我就可以将它写入bytearrayoutputstream来计算整行的哈希值。
答案 0 :(得分:0)
我是这样做的: -
if(rsmd.getColumnTypeName(col).equals("SYS.XMLTYPE")){
OracleResultSet orset = (OracleResultSet) rs;
if(orset.getOPAQUE(col) != null) {
XMLType poxml = XMLType.createXML(orset.getOPAQUE(col));
sqlResultSetRow.write(poxml.getStringVal().getBytes("UTF-8"));
}
}