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,布布扣,bubuko.com

时间: 2024-10-06 20:41:57

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

hibernate操作大文本字段Blob和Clob

hibernate操作大文本字段Blob和Clob解决方案: 1.大文本字段Blob和Clob(流); 2.截串存取 第一步: 创建新表:Elec_CommonMsg_Content create table Elec_CommonMsg_Content( comID varchar(50) not null primary key comment '主键ID', type char(2) null comment '判断站点运行和设备运行的标示', content varchar(5000)

实现在mysql数据库中保存text大文本和blob大二进制数据

项目代码如下: config配置文件: className=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/lob user=root password=root com.itheima.util包下DBUtil.java package com.itheima.util; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IO

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

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

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

一.时间(Date.Time.Timestamp) java.sql.Date/java.sql.Time/java.sql.Timestamp extends java.util.Date public class TimeData { PreparedStatement pStatement=null; //操作日期类型的数据 public void insertDate(Connection connection,long time){ try { String sql="insert i

存储大文本内容

数据表 实体类 注解  必须用@Lob   用@Column 无法修改报错

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

LOB (Large Objects)   分为:CLOB和BLOB,即大文本和大二进制数据 CLOB:用于存储大文本 BLOB:用于存储二进制数据,例如图像.声音.二进制文件 在mysql中,只有BLOB,没有CLOB,mysql存储大文本用TEXT TEXT  分为:TINYTEXT.TEXT.MEDIUMTEXT和LONGTEXT BLOB 分为:TINYBLOB.BLOB.MEDIUMBLOB和LONGBLOB 取值范围如下图: 下面来看具体的代码实现: 1 package com.cr

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

LOB,Large Objects,是一种用于存储大对象的数据类型,一般LOB又分为BLOB与CLOB.BLOB通常用于存储二进制数据,比如图片.音频.视频等.CLOB通常用于存储大文本,比如小说. MySQL数据库中没有专门的CLOB数据类型,而如果要存储大文本,MySQL采用的是TEXT类型.TEXT类型又有TINYTEXT.TEXT.MEDIUMTEXT和LONGTEXT之分.MySQL中的BLOB类型又可分为TINYBLOB.BLOB.MEDIUMBLOB和LONGBLOB. 使用JDB

sqlite3中BLOB数据类型存储大对象运用示例

1:常用接口 个人比较喜欢sqlite, 使用最方便,唯一的准备工作是下载250K的源:而且作者很热心,有问必答. 以下演示一下使用sqlite的步骤,先创建一个数据库,然后查询其中的内容.2个重要结构体和5个主要函数: sqlite3               *pdb, 数据库句柄,跟文件句柄FILE很类似 sqlite3_stmt      *stmt, 这个相当于ODBC的Command对象,用于保存编译好的SQL语句 sqlite3_open(),   打开数据库 sqlite3_e

【Oracle】【35】BLOB字段和CLOB字段

前言: BLOB用来存储大量二进制数据.如图片.音乐等,转为二进制数再存储 CLOB用来存储大量文本数据.如HTML页面等,varchar2最大是4000,预计会超过4000的用Clob 正文: 1,我用的是java + mybatis,直接用String处理就可以了.String最大能存4G 数据库:创建表 -- Create table create table CLOB_TEST ( id VARCHAR2(32) default sys_guid(), content CLOB ) 实体