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 ...
随机推荐
- VS2017 15.6之后支持直接反编译了
在 15.6 预览版 2 中,增加了导航到反编译源功能. 启用后,在任何引用的类型或成员上调用转到定义或查看定义时,将显示其通过 ILSpy 反编译使用重新构造方法主体的定义. 要打开此功能,请转到“ ...
- 判断闰年(Java)
package day01; import java.util.Scanner; public class leap_year { public static void main (String[] ...
- Linux查看版本信息
查看Linux版本以及是32位还是64位 查看版本 一.查看Linux内核版本命令(两种方法): 1.cat /proc/version [root@S-CentOS home]# cat /proc ...
- MongoDB初探-基本语句和数据结构
MySQL: 1 金老板 18 15512351234 2 小哪吒 20 15312341234 3 Alex 73 15512341234 MongoDB: { { id : 1, name:金老板 ...
- CCSprite使用记录
CCSprite使用需要CCTexture2D,就是需要纹理.可以设置绘制纹理的区域. CCSprite 有 draw方法 ,由CCDirector/mainLoop()调用(当前使用的场景为根,向下 ...
- 微信小程序 后端用Flask实现
手上有个微信小程序项目,因为对Python相对熟悉一些,打算后端用python写,具体采用python 轻量级的flask框架. 在做的过程中,有些问题需要考虑,记录在下边. 1. 开发的小程序后端怎 ...
- Coursera Deep Learning 2 Improving Deep Neural Networks: Hyperparameter tuning, Regularization and Optimization - week3, Hyperparameter tuning, Batch Normalization and Programming Frameworks
Tuning process 下图中的需要tune的parameter的先后顺序, 红色>黄色>紫色,其他基本不会tune. 先讲到怎么选hyperparameter, 需要随机选取(sa ...
- ubuntu下objective-c的编译和运行
ubuntu 下编译objective-c 1.安装编译环境 sudo aptitude install build-essential gobjc gobjc++ gnustep gnustep-d ...
- Embedded training,嵌入式训练
一旦初始的模型集被创建后, HERest使用整个训练集来执行"嵌入式训练(embedded training)",HERest将对全部HMM音素集模型执行一次Baum-Welch, ...
- Python 15 html 基础 - CSS &javascript &DOM
本节内容 CSS基础 javascript基础 DOM 前言,这边这块楼主已经很熟悉了,CSS天天用到,简单的一些javascript也是所以就挑点重点说了.然后就是dom不怎么用,但是其实也用不到, ...