JAVA读取Oracle中的blob图片字段并显示
近期,在给客户做一个Demo页面时,需要用JAVA读取Oracle中的blob图片字段并显示,在此过程中,遇到一些问题,例如:连接Oracle数据库读取blob字段数据,对图片byte数据进行缩放等;特此记录,给自己备忘,给大家参考。
整个流程分为四步,连接oracle数据库 -> 读取blob图片字段 -> 对图片进行缩放 ->把图片展示在jsp页面上。
下面进行详细描述:
1. java连接Oracle
注:数据库是Oracle10g版本为10.2.0, 在数据库中,图片字段类型为BLOB。
java中通常使用的是通过jdbc驱动来连接数据库,oracle也不例外,因此必须下载一个Oracle驱动的jdbc需要去网上进行下载,名称为 ojdbc14.jar。
下载地址为:
http://www.oracle.com/technology/software/tech/java/sqlj_jdbc/htdocs/jdbc101040.html
下载了驱动之后,可以使用驱动里提供的接口进行连接,具体代码如下:
import java.sql.*;
import java.io.*;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.awt.image.AffineTransformOp;
import java.awt.geom.AffineTransform;
public class OracleQueryBean {
private final String oracleDriverName = "oracle.jdbc.driver.OracleDriver";
private Connection myConnection = null;
/*图片表名*/
private String strTabName;
/*图片ID字段名*/
private String strIDName;
/*图片字段名*/
private String strImgName;
/**
* 加载java连接Oracle的jdbc驱动
*/
public OracleQueryBean(){
try{
Class.forName(oracleDriverName);
}catch(ClassNotFoundException ex){
System.out.println("加载jdbc驱动失败,原因:" + ex.getMessage());
}
}
/**
* 获取Oracle连接对象
* @return Connection
*/
public Connection getConnection(){
try{
//用户名+密码; 以下使用的Test就是Oracle里的表空间
//从配置文件中读取数据库信息
GetPara oGetPara = new GetPara();
String strIP = oGetPara.getPara("serverip");
String strPort = oGetPara.getPara("port");
String strDBName = oGetPara.getPara("dbname");
String strUser = oGetPara.getPara("user");
相关文档:
Oracle
索引技术的应用与剖析
最
近这段时间,总是想写一些有关性能调优的文章。但是苦于没有一个实际的案例,本人又不愿空谈理论,因为这些理论随便在网上就能找到,而且基本上千篇一律,
因为理论上的那些东西就那么多,再怎么讲也不如一个实际案例生动。还好上天不负有心人,前些天让我碰到了一个实际的案例。这个 ......
玩Oracle也有2年的时间了, 零零散散的也整理一些资料。 东西一多了,就理不清楚。 所以结合张晓明的《大话Oracle RAC》的一些内容,和自己整理的一些笔记,对Oracle 的备份和恢复做了一个系统的整理。 也是自己对知识的一个巩固吧。
一. 准备知识
先来看一些准备知识,了解 ......
INSTR方法的格式为
INSTR(源字符串, 目标字符串, 起始位置, 匹配序号)
例如:INSTR('CORPORATE FLOOR','OR', 3, 2)中,源字符串为'CORPORATE FLOOR', 目标字符串为'OR',起始位置为3,取第2个匹配项的位置。
默认查找顺序为从左到右。当起始位置为负数的时候,从右边开始查找。
所以SELECT INSTR('CORPORATE FLOOR', 'O ......
create or replace directory MY_DIR as '/usr/test/';
create or replace function f_exportTxt(
--传入参数
i_query in varchar2,
i_separator in varchar2,
i_dir in varchar2,
i_filename in varchar2
) return number
is
/**
** 函数名:f_exportTxt
&nbs ......