服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

在java应用程序中显示数据库的blob图像


  原理:
  
  从数据库中读取blob到blob对象. blob blob = rs.getblob(2);
  
  把blob传给stream.
  
  用stream参数创建image对象
  
  显示image对象.
  
  说明: 这只是例子, 没有考虑其他方面. 希望大家能对java连接数据库,和取对象有个具体的了解.
  
  关于数据库的sql
  
  create table photo (
  photo_no int(6) 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.*;
  
  /**
  
  *
  
  title:
  *
  *
  
  description:vincentlaw@163.com
  *
  *
  
  copyright: copyright (c) 2005
  *
  *
  
  vincent
  *
  * @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:thin:@127.0.0.1:1521:orcl2", "user","password");
  class.forname("com.mysql.jdbc.driver");
  connection conn = drivermanager.getconnection("jdbc:mysql://localhost:3306/job?user=root
  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;
  
  /**
  
  *
  
  title:
  *
  *
  
  description:vincentlaw@163.com
  *
  *
  
  copyright: copyright (c) 2005
  *
  *
  
  vincent
  *
  * @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(e);
  }
  
  }

扫描关注微信公众号