通过JDBC读取Blob数据,演示代码
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class JDBC {
// public static void main(String[] args) throws Exception {
// // 写入BLOB数据
//
// // 得到数据库连接
// Class.forName("oracle.jdbc.driver.OracleDriver");
//
// Connection con = DriverManager.getConnection(
//
// "jdbc:oracle:thin:@192.168.0.68:1521:myOracle", "my", "123");
//
// // 处理事务
//
// con.setAutoCommit(false);
//
// Statement st = con.createStatement();
//
// // 用for update方式锁定数据行
//
// ResultSet rs = st.executeQuery(
//
// "select content from user_content where id = 2 for update");
//
// if (rs.next()) {
//
// // 得到java.sql.Blob对象,然后Cast为oracle.sql.BLOB
//
// oracle.sql.BLOB blob = (oracle.sql.BLOB) rs.getBlob(1);
//
// // 到数据库的输出流
//
// OutputStream outStream = blob.getBinaryOutputStream();
//
// // 这里用一个文件模拟输入流
//
// File file = new File("d:\\proxy.txt");
//
// InputStream fin = new FileInputStream(file);
//
// // 将输入流写到输出流
//
// byte[] b = new byte[blob.getBufferSize()];
//
// int len = 0;
//
// while ((len = fin.read(b)) != -1) {
//
// outStream.write(b, 0, len);
//
// // blob.putBytes(1,b);
//
// }
//
// // 依次关闭(注意顺序)
//
// fin.close();
//
// outStream.flush();
//
// outStream.close();
//
// con.commit();
//
// con.close();
// }
// }
public static void main(String[] args) throws Exception {
// 读取BLOB数据
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection con = DriverManager.getConnection(
"jdbc:oracle:thin:@192.168.0.68:1521:myOracle", "my", "123");
con.setAutoCommit(false);
Statement st = con.createStatement();
// 这里的SQL语句不再需要”for update”
ResultSet rs = st.executeQuery(
"select content from user_content where id = 2");
if (rs.next()) {
java.sql.Blob blob = rs.getBlob(1);
InputStream ins = blob.getBinaryStream();
// 用文件模拟输出流
File file = new File("d:\\output.txt");
OutputStream fout = new FileOutputStream(file);
// 下面将BLOB数据写入文件
byte[] b = new byte[1024];
int len = 0;
while ((len = ins.read(b)) != -1) {
fout.write(b, 0, len);
}
// 依次关闭
fout.close();
ins.close();
con.commit();
con.close();
}
}
}