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

程序|数据|数据库|显示

 
原理:

<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.*;
import java.awt.image.*;
import java.io.*;
import javax.swing.*;

/**

* <p>Title: </p>
*
* <p>Description:vincentlaw@163.com </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:vincentlaw@163.com </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);
}

}

时间: 2024-08-03 00:10:57

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

在MFC应用程序中显示JPG/GIF图像文件

如果你是一个使用Visual Basic编程的程序员,要在程序中显示JPG或者GIF图像简直易如反掌,将图像控件拖到Form中就可以了.但是C++程序员要显示同样格式的图像文件却没有那么轻松,那么是不是要自己编写JPG解压缩代码呢?当然不用那么复杂啦!本实例将针对这个问题讨论如何在MFC中显示JPG或者GIF格式的图像文件. 一.实现方法 用Visual Basic写图像显示程序之所以如此轻松,完全是利用了琳琅满目的图像处理控件,它们处理了显示图像文件的所有底层工作,而C++程序员为了实现相同的

在MFC程序中显示 JPG/GIF图像

如果你是一个使用VB编程的程序员,要在程序中显示JPG或者GIF图像简直易如反掌,将图像控件拖到Form中,分分钟即可搞掂.但是C++程序员要显  示同样的图形却没有那么轻松,那么是不是要自己编写JPG解压缩代码呢?当然不用那么复杂啦!本文将针对这个问题讨论如何在MFC中显示JPG或者GIF 图像. 用VB写图像显示程序之所以如此轻松,完全是利用了琳琅满目的图像处理控件,把你想要做的事情都一一搞掂.而C++程序员为了实现相同的功能必须忙 乎半 天.其实,C/C++程序员也能使用那些VB程序员所用

在JAVA应用程序中如何实现FTP的功能 (转)

程序 在JAVA应用程序中如何实现FTP的功能 大连捷通电脑技术有限公司 王 淼 ---- 在JAVA的编程中,您也许会遇到FTP方面的编程,本文就来演示如何实现它. ---- 本程序是由JBUILDER2.0来开发的,为了节约篇幅我只列出主要的三个部份.FtpList 部分是用来显示FTP服务器上的文件(附图略).GetButton部分为从FTP服务器下传一个文件.PutButton 部分为向FTP服务器上传一个文件.别忘了在程序中还要引入两个库文件(import sun.net.*,impo

分布式企业Java应用程序中实现服务器组协调

如今,许多企业应用程序都由一组合作的分布式进程和服务器交付.例如,可向几乎所有流行的 Java 企业服务器的 Web 请求提供服务器集群功能,这些服务器还可以提供有限的配置选项,如服务器权重和配置重新加载. 虽然大多数 Java 企业服务器具有集群的内置支持,但对于自定义用例来说,在应用程序级并没有现成提供这种支持.作为软件开发人员,我们应该如何管理涉及分布式任务协调或支持多租户应用程序的用例?(多租户应用程序 是要求实例在整体服务器集群或组的子集上被隔离的应用程序.)对于这些类型的用例,我们必

如何在 Java 应用程序中读取 8 位和 24 位 Microsoft Windows 位图(转)

window|程序 如何在 Java 应用程序中读取 8 位和 24 位 Microsoft Windows 位图在 Java 应用程序中加载位图文件的逐步指南 作者:Jeff West 和 John D. Mitchell 摘要目前,标准的 getImage() 方法仅支持 GIF 和 JPEG 图像.尽管存在用于读取 PNG(可移植网络图形)格式的 Java 例程,但我们还没听说过有用于读取 Microsoft Windows 位图图像的阅读程序.Jeff West 撰写的这篇技巧提供了加载

从WinForm程序中显示WPF Window出现“The URI prefix is not recognized”异

从WinForm程序中显示WPF Window出现"The URI prefix is not recognized"异常的解决方法 从WinForm App中显示WPF窗口的代码: MyWindow wpfWindow = new MyWindow(); WindowInteropHelper wih = new WindowInteropHelper(wpfWindow); wih.Owner = ownerHwnd; wpfWindow.ShowDialog(); 一般情况下,这

在你的MFC应用程序中显示一个JPG文件

在VB中,我可以通过创建一个图像控件来显示一个JPG或GIF文件,但是我如何在我的MFC应用程序中显示一个JGP文件呢? 好问题!有时使用VB的程序员觉得这个很容易.只要往你的表中拖入一个图像控件,然后你就可以往下做了--然而C++程序员就不得不感到烦恼和头疼.那我们要做些什么呢,编写我们自己的JPG解压函数吗? 当然不是这样的!事实上,C/C++程序员能够使用与VB程序员所使用的非常类似(可以说是差不多)的图像控件.我并没有开玩笑.VB图像控件是基于一个叫"IPicture"的系统C

ifix 组态软件中显示数据库表内容

问题描述 ifix 组态软件中显示数据库表内容 如何将数据库某一个表中的内容显示在ifix 界面中,同时可以增加.修改.删除记录. 解决方案 你说的是操作记录吗,百度一下,方法挺多

在窗体应用程序中打开数据库。。。一直打不开。

问题描述 在窗体应用程序中打开数据库...一直打不开. { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { string strConnection = "Provider=Microsoft.Ace.OleDb.12.0;"; strConnection += @&quo