oracle存储大文本clob、blob

1 package cn.itcast.web.oracle.util;
2
3 import java.sql.Connection;
4 import java.sql.DriverManager;
5 import java.sql.ResultSet;
6 import java.sql.Statement;
7
8 public class JdbcUtil {
9 private static String driver = "oracle.jdbc.driver.OracleDriver";
10 //1521是主端口,也可能是其它端口去连接oracle数据库
11 private static String url = "jdbc:oracle:thin:@127.0.0.1:1521:orcl";
12 private static String username = "scott";
13 private static String password = "friends";
14 private static Connection conn;
15 private static Statement stmt;
16 private static ResultSet rs;
17 //注册数据库驱动
18 static{
19 try {
20 Class.forName(driver);
21 } catch (Exception e) {
22 e.printStackTrace();
23 throw new RuntimeException("oracle驱动注册失败");
24 }
25 }
26 //获取数据库连接
27 public static Connection getConnection(){
28 Connection conn = null;
29 try {
30 conn = DriverManager.getConnection(url,username,password);
31 } catch (Exception e) {
32 e.printStackTrace();
33 throw new RuntimeException("oracle连接获取失败");
34 }
35 return conn;
36 }
37 //关闭连接对象
38 public static void close(Connection conn){
39 if(conn!=null){
40 try {
41 conn.close();
42 } catch (Exception e) {
43 e.printStackTrace();
44 throw new RuntimeException("oracle连接关闭失败");
45 }
46 }
47 }
48 public static void close(Statement stmt){
49 if(stmt!=null){
50 try {
51 stmt.close();
52 } catch (Exception e) {
53 e.printStackTrace();
54 throw new RuntimeException("oracle连接关闭失败");
55 }
56 }
57 }
58 public static void close(ResultSet rs){
59 if(rs!=null){
60 try {
61 rs.close();
62 } catch (Exception e) {
63 e.printStackTrace();
64 throw new RuntimeException("oracle连接关闭失败");
65 }
66 }
67 }
68 }

1 package cn.itcast.web.oracle.dao;
2
3 import java.io.File;
4 import java.io.FileInputStream;
5 import java.io.FileOutputStream;
6 import java.io.FileReader;
7 import java.io.FileWriter;
8 import java.io.InputStream;
9 import java.io.OutputStream;
10 import java.io.Reader;
11 import java.io.Writer;
12 import java.net.URL;
13 import java.sql.Connection;
14 import java.sql.PreparedStatement;
15 import java.sql.ResultSet;
16
17 import org.junit.Test;
18
19 import cn.itcast.web.oracle.util.JdbcUtil;
20
21 //Java测试oracle数据库存取大对象
22 /*
23 create table test_clob(
24 id number primary key,
25 content clob not null
26 );
27 create table test_blob(
28 id number primary key,
29 content blob not null
30 );
31 */
32 public class LobDao {
33 //测试clob对象(存)
34 @Test
35 public void saveClobToOracle() throws Exception{
36 Connection conn = JdbcUtil.getConnection();
37 String sql = "insert into test_clob(id,content) values(?,?)";
38 PreparedStatement pstmt = conn.prepareStatement(sql);
39 pstmt.setInt(1,1);
40 //加载文件
41 URL url = LobDao.class.getClassLoader().getResource("cn/itcast/web/oracle/db/xx.txt");
42 String path = url.getPath();
43 File file = new File(path);
44 //获取文件的reader字符流对象
45 Reader reader = new FileReader(file);
46 //为第二个?占位符设置值
47 pstmt.setCharacterStream(2,reader,(int)file.length());
48 int i = pstmt.executeUpdate();
49 System.out.println(i>0?"操作成功":"操作失败");
50 reader.close();
51 JdbcUtil.close(pstmt);
52 JdbcUtil.close(conn);
53 }
54 //测试clob对象(取)
55 @Test
56 public void getClobFormOracle() throws Exception{
57 Connection conn = JdbcUtil.getConnection();
58 String sql = "select content from test_clob where id = 1";
59 PreparedStatement pstmt = conn.prepareStatement(sql);
60 ResultSet rs = pstmt.executeQuery();
61 Reader reader = null;
62 Writer writer = null;
63 while(rs.next()){
64 reader = rs.getCharacterStream("content");
65 writer = new FileWriter("d:/copy_xx.txt");
66 int len = 0;
67 char[] cuf = new char[1024];
68 while((len = reader.read(cuf))>0){
69 writer.write(cuf,0,len);
70 }
71 }
72 reader.close();
73 writer.close();
74 JdbcUtil.close(rs);
75 JdbcUtil.close(pstmt);
76 JdbcUtil.close(conn);
77 }
78 //测试blob对象(存)
79 @Test
80 public void saveBlobToOracle() throws Exception{
81 Connection conn = JdbcUtil.getConnection();
82 String sql = "insert into test_blob(id,content) values(?,?)";
83 PreparedStatement pstmt = conn.prepareStatement(sql);
84 pstmt.setInt(1,1);
85
86 URL url = LobDao.class.getClassLoader().getResource("cn/itcast/web/oracle/db/image.jpg");
87 String path = url.getPath();
88 File file = new File(path);
89 InputStream inputStream = new FileInputStream(file);
90 pstmt.setBinaryStream(2,inputStream,(int)file.length());
91
92 int i = pstmt.executeUpdate();
93 System.out.println(i>0?"操作成功":"操作失败");
94
95 inputStream.close();
96 JdbcUtil.close(pstmt);
97 JdbcUtil.close(conn);
98 }
99 //测试blob对象(取)
100 @Test
101 public void getBlobFromOracle() throws Exception{
102 Connection conn = JdbcUtil.getConnection();
103 String sql = "select content from test_blob where id = 1";
104 PreparedStatement pstmt = conn.prepareStatement(sql);
105 ResultSet rs = pstmt.executeQuery();
106 InputStream is = null;
107 OutputStream os = null;
108 while(rs.next()){
109 is = rs.getBinaryStream("content");
110 os = new FileOutputStream("d:/copy_image.jpg");
111 byte[] buf = new byte[1024];
112 int len = 0;
113 while((len=is.read(buf))>0){
114 os.write(buf,0,len);
115 }
116 }
117 is.close();
118 os.close();
119 JdbcUtil.close(rs);
120 JdbcUtil.close(pstmt);
121 JdbcUtil.close(conn);
122 }
123 }

文本:CLOB(Character)
多媒体:BLOB(Binary)

oracle存储大文本clob、blob的更多相关文章

  1. panzer 电力项目十一--hibernate操作大文本字段Blob和Clob

    hibernate操作大文本字段Blob和Clob解决方案: 1.大文本字段Blob和Clob(流); 2.截串存取 第一步: 创建新表:Elec_CommonMsg_Content create t ...

  2. JDBC中级篇(MYSQL)——处理大文本(CLOB)

    注意:其中的JdbcUtil是我自定义的连接工具类:代码例子链接: package b_blob_clob; import java.io.FileNotFoundException; import ...

  3. JDBC 复习3 存取Oracle大数据 clob blob

    1 目录结构记得导包咯 mysql oracle 2 代码,DBUtil工具类见前面的随笔博文 package dbex.mysql; import java.io.BufferedReader; i ...

  4. 深入浅出JDBC-操作时间与大对象(Clob/Blob)

    一.时间(Date.Time.Timestamp) java.sql.Date/java.sql.Time/java.sql.Timestamp extends java.util.Date publ ...

  5. 利用JDBC处理mysql大数据--大文本和二进制文件等

    转载自http://www.cnblogs.com/xdp-gacl/p/3982581.html 一.基本概念 大数据也称之为LOB(Large Objects),LOB又分为:clob和blob, ...

  6. 使用jdbc存储图片和大文本

    package cn.itcast.i_batch; import java.sql.Connection; import java.sql.PreparedStatement; import jav ...

  7. jdbc基础 (三) 大文本、二进制数据处理

    LOB (Large Objects)   分为:CLOB和BLOB,即大文本和大二进制数据 CLOB:用于存储大文本 BLOB:用于存储二进制数据,例如图像.声音.二进制文件 在mysql中,只有B ...

  8. 使用JDBC处理MySQL大文本和大数据

    LOB,Large Objects,是一种用于存储大对象的数据类型,一般LOB又分为BLOB与CLOB.BLOB通常用于存储二进制数据,比如图片.音频.视频等.CLOB通常用于存储大文本,比如小说. ...

  9. oracle对大对象类型操作:blob,clob,nclob

     1.基本介绍 Oracle和plsql都支持lob(large object) 类型,用来存储大数量数据,如图像文件,声音文件等.Oracle 9i realse2支持存储最大为4g的数据,or ...

随机推荐

  1. java.lang.ClassCastException: com.sun.proxy.$Proxy27 cannot be cast to com.bbk.n002.service.QuestionService

    1 严重: Servlet /N002-1.0 threw load() exception 2 java.lang.ClassCastException: com.sun.proxy.$Proxy2 ...

  2. 二十二、Linux 进程与信号---进程创建(续)

    22.2 父子进程操作文件 文件操作由两种模式: IO 系统调用操作文件 标准C IO 操作文件 看代码: #include <unistd.h> #include <string. ...

  3. Ant 与jemter的结合--批量执行jmeter脚本

    一.Ant 介绍&作用: Apache Ant,是一个将软件编译.测试.部署等步骤联系在一起加以自动化的一个工具,大多用于Java环境中的软件开发. 作用:打包,部署,运行Java工程 二.下 ...

  4. Maven 分模块,启动父工程时异常

    1.1 运行方式 Maven方式:命令的 方式1:运行父工程.父工程将各个子模块聚合到一起.将ssh-web打war包发布到tomcat 方式2:直接运行web工程 其他方式:传统的,   部署到to ...

  5. response的字节流和字符流输入的区别和问题--02-response的outputStream输出数据的问题.avi

    02-response的outputStream输出数据的问题.avi; [字节流] 用meta标签 第一段原始代码:写错: 03-response的Writer输出数据的问题.avi;[字符流输出] ...

  6. apk逆向实例 TopCtf

    TopCtf 题目链接: https://pan.baidu.com/s/1jINx7Fo   (在里面找相应的名字就行) 背景故事: 我是小白一枚,自学一些基础知识... 从朋友那得到的题,朋友说巨 ...

  7. css - 盒子内外边距

    css - 盒子内外边距 元素内边距 内边距是指元素包含的内容离元素边框之间的间距,padding会撑大盒子.在浏览器中显示的元素宽高包含了padding. div{     width:200px; ...

  8. python,异常处理

    # 该例子是对文件异常和类型异常分别进行的处理 try: sum = 1+' f=open('wo.txt') print(f.read()) f.close() except OSError as ...

  9. SQLServer语法常用总结

    1. 有时候查看SQL的时候表名或者字段名需要加[],这是因为有时候你的表名或者字段名正好与sqlserver的保留字段重了 比如:有一个user表,直接select会报错 select * from ...

  10. 记录linux 命令

    1.du:查询文件或文件夹的磁盘使用空间 如果当前目录下文件和文件夹很多,使用不带参数du的命令,可以循环列出所有文件和文件夹所使用的空间.这对查看究竟是那个地方过大是不利的,所以得指定深入目录的层数 ...