尝试从Oracle数据库中读取XML以创建MD5哈希

时间:2015-11-17 17:54:42

标签: java xml oracle jdbc

我有一个程序,我试图从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来计算整行的哈希值。

1 个答案:

答案 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"));
            }
          }