oracle存储大文本clob、blob
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的更多相关文章
- panzer 电力项目十一--hibernate操作大文本字段Blob和Clob
hibernate操作大文本字段Blob和Clob解决方案: 1.大文本字段Blob和Clob(流); 2.截串存取 第一步: 创建新表:Elec_CommonMsg_Content create t ...
- JDBC中级篇(MYSQL)——处理大文本(CLOB)
注意:其中的JdbcUtil是我自定义的连接工具类:代码例子链接: package b_blob_clob; import java.io.FileNotFoundException; import ...
- JDBC 复习3 存取Oracle大数据 clob blob
1 目录结构记得导包咯 mysql oracle 2 代码,DBUtil工具类见前面的随笔博文 package dbex.mysql; import java.io.BufferedReader; i ...
- 深入浅出JDBC-操作时间与大对象(Clob/Blob)
一.时间(Date.Time.Timestamp) java.sql.Date/java.sql.Time/java.sql.Timestamp extends java.util.Date publ ...
- 利用JDBC处理mysql大数据--大文本和二进制文件等
转载自http://www.cnblogs.com/xdp-gacl/p/3982581.html 一.基本概念 大数据也称之为LOB(Large Objects),LOB又分为:clob和blob, ...
- 使用jdbc存储图片和大文本
package cn.itcast.i_batch; import java.sql.Connection; import java.sql.PreparedStatement; import jav ...
- jdbc基础 (三) 大文本、二进制数据处理
LOB (Large Objects) 分为:CLOB和BLOB,即大文本和大二进制数据 CLOB:用于存储大文本 BLOB:用于存储二进制数据,例如图像.声音.二进制文件 在mysql中,只有B ...
- 使用JDBC处理MySQL大文本和大数据
LOB,Large Objects,是一种用于存储大对象的数据类型,一般LOB又分为BLOB与CLOB.BLOB通常用于存储二进制数据,比如图片.音频.视频等.CLOB通常用于存储大文本,比如小说. ...
- oracle对大对象类型操作:blob,clob,nclob
1.基本介绍 Oracle和plsql都支持lob(large object) 类型,用来存储大数量数据,如图像文件,声音文件等.Oracle 9i realse2支持存储最大为4g的数据,or ...
随机推荐
- zookeeper的作用
1.管理(存储和读取)程序提交的状态数据 2.为用户程序提供数据节点监听服务
- luogu 4377 Talent show 01分数规划+背包dp
01分数规划+背包dp 将分式下面的部分向右边挪过去,通过二分答案验证, 注意二分答案中如果验证的mid是int那么l=mid+1,r=mid-1,double类型中r=mid,l=mid; 背包dp ...
- Spring 快速开始 配置Spring Framework
[配置Spring Framework] 1.XML配置依赖关系 bean是由Springframework管理,我们自己编写bean,Spring也内建了bean,比如ApplicationCont ...
- c# c/s 框架的分页用户控件,还有事件
using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; u ...
- Linux 常用命令(2)
wc命令:用于对文件的行数.单词数和字符数进行统计. wc -w file.txt,显示文件中的单词数,wc -l file.txt,显示文件中的行数,wc -m file.txt,显示文件中的字符数 ...
- 数组B:我想我需要一艘船屋
Fred Mapper is considering purchasing some land in Louisiana to build his house on. In the process o ...
- [C++]PAT乙级1012.数字分类 (20/20)
/* 1012. 数字分类 (20) 给定一系列正整数,请按要求对数字进行分类,并输出以下5个数字: A1 = 能被5整除的数字中所有偶数的和: A2 = 将被5除后余1的数字按给出顺序进行交错求和, ...
- JS中原型链中的prototype与_proto_的个人理解与详细总结
1.对象的内部属性[[prototype]]和属性__proto__:每个对象都具有一个名为__proto__的属性: 2.函数的属性prototype:每个构造函数(构造函数标准为大写开头,如Fun ...
- AttributeError: module '__main__' has no attribute 'main'解决方法
在终端运行.py文件时报错:AttributeError: module '__main__' has no attribute 'main' 原因:在PyCharm里运行python程序需要添加 i ...
- 15款Java程序员必备的开发工具(转)
如果你是一名Web开发人员,那么用膝盖想也知道你的职业生涯大部分将使用Java而度过.这是一款商业级的编程语言,我们没有办法不接触它 对于Java,有两种截然不同的观点: 一种认为Java是最简单功能 ...