您好,欢迎来到华佗小知识。
搜索
您的当前位置:首页oracle中读取blob字段

oracle中读取blob字段

来源:华佗小知识
 Oracle中blob类型的读取

虽然用blob的情况不多,但是还是得了解一下,网上看得有点乱,而且没有看到从数据读blob的。在此总结一下:

数据库中的建表语句如下:

Sql代码

 create table blogtest(id number primary key,name varchar2(20),picture

blob);

Java代码

 package August;

 import java.io.FileInputStream;

 import java.io.FileOutputStream;

 import java.io.InputStream;

 import java.io.OutputStream;

 import java.sql.Connection;

 import java.sql.DriverManager;

 import java.sql.PreparedStatement;

 import java.sql.ResultSet;

 import java.sql.SQLException;

 import java.sql.Statement;

 public class OracleBlobTest {

 public static void main(String[] args) {

 }

 public static void readBlob() {

 try {

 Class.forName(\"oracle.jdbc.driver.OracleDriver\");

 Connection conn = DriverManager.getConnection(

 \"jdbc:oracle:thin:@127.0.0.1:1521/july\

 \"snaillocke\");

 Statement st = conn.createStatement();

 PreparedStatement ps = conn.prepareStatement(\"select * from

BLOBTEST where id = ?\");

 ps.setInt(1, 1);

 ResultSet rs = ps.executeQuery();

 rs.next();

 oracle.sql.BLOB imgBlob = (oracle.sql.BLOB) rs.getBlob(3);

 // 将二进制数据写入BLOB

 try{

 FileOutputStream outStream = new

FileOutputStream(\"D:/oracleback.png\");

 InputStream inStream = imgBlob.getBinaryStream();

 byte[] buf = new byte[10240];

 int len;

 while ((len = inStream.read(buf)) > 0) {

 outStream.write(buf, 0, len);

 }

 inStream.close();

 outStream.close();

 }catch(Exception e) {

 e.printStackTrace();

 }



 } catch (ClassNotFoundException e) {

 e.printStackTrace();

 } catch (SQLException e) {

 e.printStackTrace();

 }

 }

 public static void writeBlob() {

 try {

 Class.forName(\"oracle.jdbc.driver.OracleDriver\");

 Connection conn = DriverManager.getConnection(

 \"jdbc:oracle:thin:@127.0.0.1:1521/july\

 \"snaillocke\");

 Statement st = conn.createStatement();

 // 插入一个空对象empty_blob()

 // 锁定数据行进行更新,注意“for update”语句

 PreparedStatement ps = conn.prepareStatement(\"insert into

BLOBTEST (ID, NAME, PICTURE) values (1,'fang.jpg',?)\");

 // 通过ORALCE.SQL.BLOB/CLOB.EMPTY_LOB()构造空BLOB/CLOB对

 ps.setBlob(1, oracle.sql.BLOB.empty_lob());

 ps.execute();

 ps.close();

 // 再次对读出BLOB/CLOB句柄

 ps = conn

 .prepareStatement(\"SELECT * FROM BLOBTEST WHERE

ID=? FOR UPDATE\");

 ps.setInt(1, 1);

 ResultSet rs = ps.executeQuery();

 rs.next();

 oracle.sql.BLOB imgBlob = (oracle.sql.BLOB) rs.getBlob(3);

 // 将二进制数据写入BLOB

 try{

 FileInputStream inStream = new FileInputStream(\"D:/My

Pictures/oracle.png\");

 OutputStream outStream = imgBlob.getBinaryOutputStream();

 byte[] buf = new byte[10240];

 int len;

 while ((len = inStream.read(buf)) > 0) {

 outStream.write(buf, 0, len);

 }

 inStream.close();

 outStream.close();

 }catch(Exception e) {

 e.printStackTrace();

 }

 // 再将Blob字段更新到数据库

 ps = conn

 .prepareStatement(\" update BLOBTEST set PICTURE=?\");

 ps.setBlob(1, imgBlob);

 ps.executeUpdate();

 } catch (ClassNotFoundException e) {

 e.printStackTrace();

 } catch (SQLException e) {

 e.printStackTrace();

 }

 }

 }

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo0.cn 版权所有 湘ICP备2023017654号-2

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务