【发布时间】:2015-11-20 18:01:46
【问题描述】:
我正在构建一个显示来自 SQL Server 数据库的图像的应用程序,这里是代码:
这就是我从存储过程中获取 BinaryStream 的方式
public static ImageIcon getImageBytes(int id){
InputStream is = null;
ImageIcon img = null;
try{
String query = "exec [dbo].[sp_ObtenerImagen] '"+id+"'";
Statement state = Constant.Conecctions().createStatement();
ResultSet rs = state.executeQuery(query);
while(rs.next()){
is= rs.getBinaryStream(1);
}
}catch(SQLException e){
}
try {
img = new ImageIcon(ImageIO.read(is));
} catch (IOException ex) {
Logger.getLogger(D_Clientes.class.getName()).log(Level.SEVERE, null, ex);
}
return img;
}
因为我会将图像显示到 JPanel 中,所以我需要一个 Jlabel,所以我创建了这个:
public static JLabel bytesToIMG(int idCliente) {
JLabel lab = new JLabel(D_Clientes.getImageBytes(idCliente));
return lab;
}
所以,现在尝试向面板显示图像:
panelImagen.removeAll();
panelImagen.add(OperacionImagen.bytesToIMG(Integer.parseInt(tableClientes.getModel().getValueAt(selectedRow, 0).toString())));
panelImagen.revalidate();
panelImagen.repaint();
我在以下行收到 java.lang.NullpointerException:img = new ImageIcon(ImageIO.read(is));
并在 ImageIcon 类上引用 Object o = image.getProperty("comment", imageObserver);。
请帮忙。
编辑。
这里是整个stackTrace
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at javax.swing.ImageIcon.<init>(ImageIcon.java:240)
at Datos.D_Clientes.getImageBytes(D_Clientes.java:242)
at Validations.OperacionImagen.bytesToIMG(OperacionImagen.java:71)
at Presentacion.Gestion_Clientes.tableClientesMouseClicked(Gestion_Clientes.java:410)
at Presentacion.Gestion_Clientes.access$700(Gestion_Clientes.java:14)
at Presentacion.Gestion_Clientes$8.mouseClicked(Gestion_Clientes.java:308)
at java.awt.AWTEventMulticaster.mouseClicked(AWTEventMulticaster.java:270)
at java.awt.Component.processMouseEvent(Component.java:6538)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
at java.awt.Component.processEvent(Component.java:6300)
at java.awt.Container.processEvent(Container.java:2236)
at java.awt.Component.dispatchEventImpl(Component.java:4891)
at java.awt.Container.dispatchEventImpl(Container.java:2294)
at java.awt.Component.dispatchEvent(Component.java:4713)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4534)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466)
at java.awt.Container.dispatchEventImpl(Container.java:2280)
at java.awt.Window.dispatchEventImpl(Window.java:2750)
at java.awt.Component.dispatchEvent(Component.java:4713)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
at java.awt.EventQueue$4.run(EventQueue.java:731)
at java.awt.EventQueue$4.run(EventQueue.java:729)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
【问题讨论】:
-
发布您的整个堆栈跟踪
标签: java sql database image exception