Topic: 在java应用程序中显示数据库的blob图像 |
Print this page |
1.在java应用程序中显示数据库的blob图像 | Copy to clipboard |
Posted by: vincentlaw Posted on: 2005-08-17 11:22 原理: <1> 从数据库中读取blob到Blob对象. Blob blob = rs.getBlob(2); <2>把blob传给Stream. <3>用Stream参数创建Image对象 <4>显示Image对象. 说明: 这只是例子, 没有考虑其他方面. 希望大家能对java连接数据库,和取对象有个具体的了解. 关于数据库的sql CREATE TABLE photo ( photo_no int unsigned NOT NULL auto_increment, image blob, PRIMARY KEY (`photo_no`) ) 本例子用到两个文件: DrawPanel.java如下 import java.awt.*; import java.sql.*; import java.awt.image.*; import java.io.*; import javax.swing.*; /** * <p>Title: </p> * * <p>Description:vincentlaw@163.com </p> * * <p>Copyright: Copyright 2005</p> * * <p>Vincent</p> * * @author vincent * @version 1.0 */ public class DrawPanel extends Panel { Image im; Insets insets; public DrawPanel() { im=Toolkit.getDefaultToolkit().getImage("c:1.jpg"); //默认的文件 try { jbInit(); } catch (Exception ex) { ex.printStackTrace(); } } public void addNotify() { super.addNotify(); insets = getInsets(); setBounds(100, 100, 217 + insets.left, 321 + insets.top); } public void paint(Graphics g) { g.drawImage(im, insets.left, insets.top, this); } private void jbInit() throws Exception { } public void changeImage(String fileName) { try { //Class.forName("oracle.jdbc.driver.OracleDriver"); //Connection conn = DriverManager.getConnection("jdbc:oracle:thin127.0.0.1:1521:orcl2", "user","password"); Class.forName("com.mysql.jdbc.Driver"); Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/job?user=root&password=5672831"); Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery("select photo_no,photo_image from photo"); rs.next(); Blob blob = rs.getBlob(2); // 数据库连接 InputStream fin = blob.getBinaryStream(); im = javax.imageio.ImageIO.read(fin); rs.close(); stmt.close(); conn.close(); } catch(Exception e) { e.printStackTrace(); JOptionPane.showMessageDialog(null,"错误,装载本地文件"); im=Toolkit.getDefaultToolkit().getImage(fileName); } this.repaint(); } } ShowImage.java如下: import java.awt.BorderLayout; import java.awt.*; import javax.swing.*; import javax.swing.JToggleButton; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; /** * <p>Title: </p> * * <p>Description:vincentlaw@163.com </p> * * <p>Copyright: Copyright 2005</p> * * <p>Vincent</p> * * @author vincent * @version 1.0 */ public class ShowImage extends JFrame { BorderLayout borderLayout1 = new BorderLayout(); JToggleButton jToggleButton1 = new JToggleButton(); DrawPanel panel=new DrawPanel(); public ShowImage() { try { jbInit(); } catch (Exception exception) { exception.printStackTrace(); } } private void jbInit() throws Exception { getContentPane().setLayout(borderLayout1); jToggleButton1.setText("jToggleButton1"); jToggleButton1.addActionListener(new ShowImage_jToggleButton1_actionAdapter(this)); this.getContentPane().add(jToggleButton1, java.awt.BorderLayout.NORTH); this.getContentPane().add(panel,java.awt.BorderLayout.CENTER); } public void jToggleButton1_actionPerformed(ActionEvent e) { panel.changeImage("E:photohoto1281.jpg"); //备用图像文件 } public final static void main(String[] args){ JFrame frame=new ShowImage(); frame.setSize(800,600); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } } class ShowImage_jToggleButton1_actionAdapter implements ActionListener { private ShowImage adaptee; ShowImage_jToggleButton1_actionAdapter(ShowImage adaptee) { this.adaptee = adaptee; } public void actionPerformed(ActionEvent e) { adaptee.jToggleButton1_actionPerformed; } } |
Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1 客服电话 18559299278 客服信箱 714923@qq.com 客服QQ 714923 |