java操作oracle数据库中的blob字段
2010-01-04 14:07
381 查看
oracle中的BLOB字段是存储2进制的文件,比如文件,图片等。
1、把本地文件写入数据库
2、从数据库中读取Blob字段数据
1、把本地文件写入数据库
package com.data; import java.io.File; import java.io.FileInputStream; import java.io.OutputStream; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.Statement; public class WriteBlob { /** * beckham 2009-12-7 下午09:47:36 */ public static void main(String[] args) throws Exception { Class.forName("oracle.jdbc.driver.OracleDriver").newInstance(); String url = "jdbc:oracle:thin:@localhost:1521:menhu"; String user = "zm"; String password = "zm"; Connection conn = DriverManager.getConnection(url, user, password); // 设置手动提交 conn.setAutoCommit(false); Statement sta = null; ResultSet rs = null; PreparedStatement ps = null; // 插入空值 String sql = "insert into mytest values(3,empty_blob()) "; sta = conn.createStatement(); sta.executeUpdate(sql); conn.commit(); // 锁定并编辑当前数据 sql = "select images from mytest where id=3 for update"; rs = sta.executeQuery(sql); if (rs.next()) { oracle.sql.BLOB b = (oracle.sql.BLOB) rs.getBlob("images"); // 输入流 OutputStream os = b.getBinaryOutputStream(); // 输出流 FileInputStream fiis = new FileInputStream(new File("1.doc")); // 入库 byte[] tmp = new byte[1024]; int a = 0; while ((a = fiis.read(tmp)) != -1) { os.write(tmp, 0, a); os.flush(); } os.close(); fiis.close(); } conn.commit(); rs.close(); sta.close(); conn.close(); } }
2、从数据库中读取Blob字段数据
package com.data; import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; public class ReadBlob { /** * beckham 2009-12-8 下午03:49:30 */ public static void main(String[] args) throws Exception { Class.forName("oracle.jdbc.driver.OracleDriver").newInstance(); String url = "jdbc:oracle:thin:@localhost:1521:menhu"; String user = "zm"; String password = "zm"; Connection conn = DriverManager.getConnection(url, user, password); conn.setAutoCommit(false); String sql = "select images from mytest where id=3"; Statement sta = null; ResultSet rs = null; sta = conn.createStatement(); rs = sta.executeQuery(sql); while (rs.next()) { //数据库-->本地文件 oracle.sql.BLOB b = (oracle.sql.BLOB) rs.getBlob("images"); InputStream fis = b.getBinaryStream() ; FileOutputStream fos = new FileOutputStream(new File("D://1.doc")); byte[] tmp = new byte[1024]; int a = 0; while ((a = fis.read(tmp)) != -1) { fos.write(tmp,0,a); fos.flush() ; } fos.close(); fis.close(); } conn.commit(); rs.close(); sta.close(); conn.close(); } }
相关文章推荐
- 从 Oracle 大字段(blob,clob)的读、写认识 Java JDBC操作全攻略
- 操作Oracle数据库实现上传图片到Blob类型的字段出现的问题
- [转贴]Java中操作数据库的Blob字段,将文件写入数据库!!!
- 对oracle数据库Blob字段的操作
- java 操作blob、clob大字段代码示例
- 操作Oracle数据库实现上传图片到Blob类型的字段出现的问题
- Hibernate操作Blob类型字段出现java.lang.AbstractMethodError: oracle.jdbc.driver.OracleResultSetImpl.getBlob(Ljava/lang/String;)Ljava/sql/
- java 纯sql 操作blob..字段
- 操作Oracle数据库实现上传图片到Blob类型的字段出现的问题
- 操作Oracle数据库实现上传图片到Blob类型的字段
- c# winform 操作oracle数据库的Blob字段,把图片存储到数据库,保存图片到数据库
- java对oracle中blob字段的操作
- java向Oracle数据库中插入blob字段数据
- java读取oracle数据库中blob字段
- 使用java语言操作,如何来实现MySQL中Blob字段的存取
- JAVA对Oracle中BLOB、CLOB类型字段的操作说明
- java读取mysql数据库的blob字段和Oracle数据库的Blob字段的区别【读取properties文件】
- Oracle学习笔记之Java操作Oracle数据库
- java操作clob字段
- Oracle数据库基本操作 (五) —— 使用java调用存储过程