Oracle读取Blob数据-通过JDBC

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


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值