通过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();
- }
- }
- }