您的位置:首页 > 数据库 > Oracle

Oracle读取Blob数据-通过JDBC

2011-08-05 10:41 429 查看
通过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();
}
}
}


 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息