求助,从数据库啊中加载多张图片,总是内存溢出,请各位老师指点有没有好的方法,代码如下
public class TowerImage extends JPanel{
String driver= "com.microsoft.sqlserver.jdbc.SQLServerDriver";
String user="sa",password="370982";
String url="jdbc:sqlserver://localhost;DatabaseName=基础信息";
InputStream input;
int i=0;
public TowerImage() throws Exception {
this.setLayout(new FlowLayout(FlowLayout.LEFT));
String sql="select 图片 from 基础图片 where 组别='基础组'";
Class.forName(driver);
Connection con=DriverManager.getConnection(url,user,password);
Statement st=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
ResultSet rs=st.executeQuery(sql);
rs.beforeFirst();
while(rs.next()){
input=rs.getBinaryStream("图片");
add(new picbox(input));
i++;
}
setPreferredSize(new Dimension(150,(i/5+1)*220));
rs.close();
st.close();
con.close();
}
class picbox extends JPanel{
BufferedImage image;
picbox(InputStream in) throws IOException{
image=ImageIO.read(in);
try{
setPreferredSize(new Dimension(220,250));
}catch(Exception e){e.printStackTrace();}
}
public void paintComponent(Graphics g){
super.paintComponent(g);
g.drawImage(image,0,0,getWidth(),getHeight(),null);
image=null;
g.dispose();
}
}
}