Oi pessoal sou novo aqui no fórum e gostaria da ajuda de vocês para resolver esse problema.
Problema:
Estou buscando no banco de dados um campo BLOB e retornando para uma classe e transformando para byte porém é nesse momento que apresenta o erro
Segue o trecho do código e o erro:
private void acaobotaoconsult2() {
fun = ControleFuncionario.consultarcadastro(textmatricula.getText());
if(fun!= null){
textnomefunc.setText(fun.getNomefun());
textsetorfunc.setText(fun.getSetfun());
try {
image = (Blob) fun.getBlob();
System.out.println("image2:"+image);
imgByte = image.getBytes(1,(int)image.length());
System.out.println("byte2="+imgByte);
icon = new ImageIcon(imgByte);
icon.setImage((Image) fun.getBlob());
jlabel1.setText("");
jlabel1.setIcon(icon);
} catch (SQLException ex) {
System.out.println("EX:"+ex);
Logger.getLogger(GerenciamentoVisitantes.class.getName()).log(Level.SEVERE, null, ex);
}
}
erro:
image1=oracle.sql.BLOB@88b1e6
Byte=[B@578dfb
image2:oracle.sql.BLOB@88b1e6
EX:java.sql.SQLRecoverableException: Conexão Fechada
31/01/2012 09:11:34 projeto_portaria.GerenciamentoVisitantes acaobotaoconsult2
SEVERE: null
java.sql.SQLRecoverableException: Conexão Fechada
at oracle.sql.BLOB.getDBAccess(BLOB.java:1087)
at oracle.sql.BLOB.length(BLOB.java:151)
at projeto_portaria.GerenciamentoVisitantes.acaobotaoconsult2(GerenciamentoVisitantes.java:396)
at projeto_portaria.GerenciamentoVisitantes.actionPerformed(GerenciamentoVisitantes.java:350)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.Component.processMouseEvent(Component.java:6263)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
at java.awt.Component.processEvent(Component.java:6028)
at java.awt.Container.processEvent(Container.java:2041)
at java.awt.Component.dispatchEventImpl(Component.java:4630)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
at java.awt.Container.dispatchEventImpl(Container.java:2085)
at java.awt.Window.dispatchEventImpl(Window.java:2478)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:178)
at java.awt.Dialog$1.run(Dialog.java:1046)
at java.awt.Dialog$3.run(Dialog.java:1098)
at java.security.AccessController.doPrivileged(Native Method)
at java.awt.Dialog.show(Dialog.java:1096)
at java.awt.Component.show(Component.java:1563)
at java.awt.Component.setVisible(Component.java:1515)
at java.awt.Window.setVisible(Window.java:842)
at java.awt.Dialog.setVisible(Dialog.java:986)
at projeto_portaria.GerenciamentoVisitantes.<init>(GerenciamentoVisitantes.java:129)
at projeto_portaria.Tela_Inicial.actionPerformed(Tela_Inicial.java:129)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:272)
at java.awt.Component.processMouseEvent(Component.java:6263)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
at java.awt.Component.processEvent(Component.java:6028)
at java.awt.Container.processEvent(Container.java:2041)
at java.awt.Component.dispatchEventImpl(Component.java:4630)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
at java.awt.Container.dispatchEventImpl(Container.java:2085)
at java.awt.Window.dispatchEventImpl(Window.java:2478)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
CONSTRUÍDO COM SUCESSO (tempo total: 1 minuto 13 segundos)
Abaixo o trecho do BANCO:
try
{
String comando = ""+func;
String query ="select b.nomfun, b.nomccu, a.fotemp from r034fot a,usu_vfuncccu b where a.numcad= b.numcad and a.numcad=?";
result = null;
stm = con.prepareStatement(query);//prepara o que envia p/ o BD
stm.setString(1, comando);// seta o ?
result = stm.executeQuery();//Mostra o resultado da solicitação.
result.next(); //ele faz com que passe p/ a proxima linha da tabela.
image = (Blob) result.getBlob("fotemp");
System.out.println("image1="+image);
imgByte = image.getBytes(1,(int)image.length());
System.out.println("Byte="+imgByte);
return new Funcionario(result.getString("Nomfun"),result.getString("Nomccu"),image);
}
Agradeço se me ajudar :D