Olá a todos.
Estou com um pequeno problema para inserir um xml no DB2. Eis o que estou fazendo:
[code] public void mtInserirRelatorioAdequacaoBD(Connection c, RelatorioAdequacao relatorio) throws Exception {
PreparedStatement ps = null;
StringBuffer cmd = new StringBuffer();
cmd.append("insert into acad.vaccq4 (cforma, anoofer, ccoord, cscoord, trel, dtrel, xmlrel) ");
// 1 2 3 4 5 6
cmd.append(" values (?, ?, ?, ?, ?, current_timestamp, ?)");
try {
ps = c.prepareStatement(cmd.toString());
ps.setInt(1,relatorio.getFormaOferecimento().getIdentificacaoFormaOferecimento());
ps.setInt(2,relatorio.getAnoOferecimento());
ps.setInt(3,relatorio.getCodigoCoordenadoria());
ps.setInt(4,relatorio.getCodigoSubCoordenadoria());
ps.setInt(5,relatorio.getTipoRelatorio());
BufferedReader reader = new BufferedReader(new InputStreamReader(relatorio.getXml())); // getXml() retorna o inputStream
ps.setCharacterStream(6, reader, relatorio.getXml().available());
ps.executeUpdate();
} finally {
if (ps != null)
ps.close();
ps = null;
}
}[/code]
O campo XMLREL é do tipo CLOB, e seu tamanho é de 916194 bytes. O que acontece é que, eventualmente temos um sql code -302, ou seja, dizendo que o arquivo que estamos tentando inserir é maior que o tamanho suportado para a coluna. Gostaria de saber se , antes de inserir este InputStream é possivel eu obter o tamanho dele. Eu não tenho o codigo que gera ele, mas sei que o java gera uma Stringzona grande e converte para InputStream para ser inserida no banco por CLOB. Preciso saber como ter o tamanho deste XML para validar a inserção, e apontar quais casos exatamente que estão com tamanho maior, temos mais de 2M registros (aplicação para a universidade Unicamp) portanto dificilmente vou poder ficar testando para saber qual exatamente que está ultrapassando o limite.
Obrigado a quem puder ajudar. []´s