OI Galera GUJ
Seguinte estou desenvolvendo um programa que lê uma tabela do banco de Dados MSSQLServer 2008 que contem dois campos um do tipo VARCHAR e um outro do tipo IMAGE, depois estou gravando- os no Oracle 11g em uma tabela com um VARCHAR2 e BLOB.
Já tentei fazer cast normal (Blob), cast específico (java.sql.Blob), mas o erro persiste. Segue o código alguma outra idéia:
Erro completo:
java.lang.ClassCastException: com.microsoft.sqlserver.jdbc.SQLServerBlob cannot be cast to oracle.sql.BLOB
at oracle.jdbc.driver.OraclePreparedStatement.setBlob(OraclePreparedStatement.java:6156)
at oracle.jdbc.driver.OraclePreparedStatementWrapper.setBlob(OraclePreparedStatementWrapper.java:125)
at br.com.edocsystem.BancoDestino.Gravacao.grava(Gravacao.java:52)
Segue o método
[code] public void grava() throws Exception{
Connection connection = getConexao();
LeituraTabPDF tab_pdf = new LeituraTabPDF();
ResultSet id = tab_pdf.leiaID();
ResultSet pdf = tab_pdf.leiaPDF();
List<String> idB = new ArrayList<String>();
List<java.sql.Blob> pdfB = new ArrayList<java.sql.Blob>();
for (int i = 1; id.next()&& pdf.next(); ++i)
{
idB.add(id.getString("id"));
pdfB.add((java.sql.Blob)pdf.getBlob("pdf"));
}
Object[] testeb = idB.toArray();
Object[] testea = pdfB.toArray();
for(int i=0; i<idB.size();i++){
String sql = "INSERT INTO ARQUIVOS(ID,ARQUIVO)VALUES(?,?)";
PreparedStatement st = connection.prepareStatement(sql);
st.setString(1, (String) testeb[i]);
st.setBlob(2,((java.sql.Blob) testea[i]));
st.executeQuery();
}
}
}[/code]