在oracle中创建表
create table blobtest(
ID int primary key,
pic blob
);
以下是java代码:
package test;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.sql.Blob;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
/**
* @author minos
*
*/
public class BlobTest {
/**
* @param args
*/
Connection con = null;
/*
* 向数据库中添加BLOB数据
*/
public void addBlob() {
// 创建一个PreparedStatement实例
try {
PreparedStatement pstmt = con
.prepareStatement("insert into blobtest values(1,?)");
//文件换成你的文件
File file = new File("D:\\MyDocuments\\Pictures\\2012-01-28\\001.JPG");
FileInputStream fis = new FileInputStream(file);
// 把输入流设置为预处理语句的对象
pstmt.setBinaryStream(1, fis, (int) file.length());
// 执行更新
pstmt.executeUpdate();
pstmt.close();
fis.close();
} catch (Exception e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
}
// // 创建一个表
// public void createTable() {
// try {
// con.createStatement().execute(
// "create table blobtest(id int,pic blob,"
// + "constraint pk_blobtest primary key(id));");
// } catch (Exception e) {
// // TODO 自动生成 catch 块
// e.printStackTrace();
// }
// }
/**
* 从数据库中读取BLOB数据
*
* @param args
*/
public void getBlob() {
// 创建一个Statement实例
try {
Statement stmt = con.createStatement();
ResultSet rst = stmt
.executeQuery("select * from blobtest where id=1");
rst.next();
// 获取BLOB数据和它的输入流,然后通过输入流把数据写到文件中
Blob blob = rst.getBlob("pic");
//文件换成你要存储的文件
FileOutputStream out = new FileOutputStream(new File("c:\\k.jpg"));
InputStream in = blob.getBinaryStream();
int i;
while ((i = in.read()) != -1)
out.write(i);
// 关闭输入、输出流
in.close();
out.close();
} catch (Exception e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
}
public static void main(String[] args) {
// TODO 自动生成方法存根
try {
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
BlobTest test = new BlobTest();
String url = "jdbc:oracle:thin:@127.0.0.1:1521:orcl";
String user = "scott";
String pwd = "tiger";
test.con = DriverManager.getConnection(url, user, pwd);
// test.createTable();
test.addBlob();
test.getBlob();
} catch (Exception e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
}
}