• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

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

servlet/jsp 搞代码 7年前 (2018-06-18) 213次浏览 已收录 0个评论

 

原理:

<1> 从数据库中读取blob到Blob对象. Blob blob = rs.getBlob(2);

<2>把blob传给Stream.

<3>用Stream参数创建Image对象

<4>显示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.*;

http://www.gaodaima.com/40217.html在java应用程序中显示数据库的blob图像

import java.awt.image.*;
import java.io.*;
import javax.swing.*;

/**

* <p>Title: </p>
*
* <p>Description:[email protected] </p>
*
* <p>Copyright: Copyright (c) 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: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&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:[email protected] </p>
*
* <p>Copyright: Copyright (c) 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(e);
}

}

欢迎大家阅读《在java应用程序中显示数据库的blob图像》,跪求各位点评,若觉得好的话请收藏本文,by 搞代码


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:在java应用程序中显示数据库的blob图像

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址