CLOB: 用来存储单字节的字符数据
BLOB: 用于存储二进制数据
------------------------------------------------------------------------------------------------
API:
clob
long |
length() 检索此 Clob 对象指定的 CLOB 值中的字符数。 |
blob
byte[] |
getBytes(long pos, int length) 以字节数组的形式检索此 Blob 对象表示的全部或部分 BLOB 值。 |
long |
length() 返回由此 Blob 对象指定的 BLOB 值中的字节数。 |
----------------------------------------------------------------------
JDBC
CLOB Java代码
//获得数据库连接
Connection con = ConnectionFactory.getConnection(); con.setAutoCommit(false);
Statement st = con.createStatement(); //不需要“for update”
ResultSet rs = st.executeQuery("select CLOBATTR from TESTCLOB where ID=1");
if (rs.next()) {
java.sql.Clob clob = rs.getClob("CLOBATTR");
Reader inStream = clob.getCharacterStream();
char[] c = new char[(int) clob.length()]; //读取字节数
inStream.read(c);
//data是读出并需要返回的数据,类型是String data = new String(c);
inStream.close();
}
inStream.close();
con.commit();
con.close();
BLOB java 代码
//获得数据库连接
Connection con = ConnectionFactory.getConnection(); con.setAutoCommit(false);
Statement st = con.createStatement(); //不需要“for update”
ResultSet rs = st.executeQuery("select BLOBATTR from TESTBLOB where ID=1");
if (rs.next()) {
java.sql.Blob blob = rs.getBlob("BLOBATTR");
InputStream inStream = blob.getBinaryStream();
//data是读出并需要返回的数据,类型是
byte[] data = new byte[input.available()]; //input.available()字节长度
inStream.read(data);
inStream.close();
}
inStream.close();
con.commit();
con.close();
JDBC SQL插入语句:
CLOB java 代码
//获得数据库连接
Connection con = ConnectionFactory.getConnection(); con.setAutoCommit(false);
Statement st = con.createStatement();
//插入一个空对象empty_clob()
st.executeUpdate("insert into TESTCLOB (ID, NAME, CLOBATTR) values (1, "thename", empty_clob())");
//锁定数据行进行更新,注意“for update”语句
ResultSet rs = st.executeQuery("select CLOBATTR from TESTCLOB where ID=1 for update");
if (rs.next()) {
//得到java.sql.Clob对象后强制转换为oracle.sql.CLOB
oracle.sql.CLOB clob = (oracle.sql.CLOB) rs.getClob("CLOBATTR");
Writer outStream = clob.getCharacterOutputStream();
//data是传入的字符串,定义:String data
char[] c = data.toCharArray();
outStream.write(c, 0, c.length);
}
outStream.flush();
outStream.close();
con.commit();
con.close();
BLOB java 代码
//获得数据库连接
Connection con = ConnectionFactory.getConnection(); con.setAutoCommit(false);
Statement st = con.createStatement();
//插入一个空对象empty_blob()
st.executeUpdate("insert into TESTBLOB (ID, NAME, BLOBATTR) values (1, "thename", empty_blob())");
//锁定数据行进行更新,注意“for update”语句
ResultSet rs = st.executeQuery("select BLOBATTR from TESTBLOB where ID=1 for update");
if (rs.next()) {
//得到java.sql.Blob对象后强制转换为oracle.sql.BLOB
oracle.sql.BLOB blob = (oracle.sql.BLOB) rs.getBlob("BLOBATTR");
OutputStream outStream = blob.getBinaryOutputStream();
//data是传入的byte数组,定义:byte[] data
outStream.write(data, 0, data.length);
}
outStream.flush();
outStream.close();
con.commit();
con.close();
---------------------------------------------------------------------
Hibernate保存大字段:
blob:
PO: import org.apache.struts.upload.FormFile;
属性:private FormFile file = null;
byte[] fileData = po.getFile().getFileData();
String fileName = po.getFile().getFileName();
PubInfoFiles pubInfoFiles = new PubInfoFiles();
pubInfoFiles.setFileName(fileName);//private Blob file;
pubInfoFiles.setFile(Hibernate.createBlob(fileData));
pubInfoFiles.setCreateDate(new Date());
getPubFileService().savePo(pubInfoFiles);
//一般保存PO的方法
clob:
在映射文件中定义成org.springframework.orm.hibernate3.support.ClobStringType类型,在po中定义成String类型
<property name="requestContent" type="org.springframework.orm.hibernate3.support.ClobStringType"><column name="REQUEST_CONTENT"></column></property>
private String requestContent;操作同String类似。
输出eg:
//将图片读进输入流
FileInputStream fis = new FileInputStream("c:\\a.jpg");
//转成Blob类型
photo = Hibernate.createBlob(fis);
user.setPhoto(photo);
xx.save(user);
try {
//从数据库中要读取出来
InputStream is = user.getPhoto().getBinaryStream();
//在写到一个图片格式的文件里
FileOutputStream fos = new FileOutputStream("c:\\l.jpg");
byte[] buffer = new byte[1024];
int len = 0;
//从数据库中读取到指定的字节数组中
while((len = is.read(buffer) )!= -1){
//从指定的数组中读取,然后输出来,所以这里buffer好象是连接inputStream和outputStream的一个东西
fos.write(buffer,len);
} catch (FileNotFoundException e) {
e.printStackTrace(); } catch (SQLException e) {
e.printStackTrace(); } catch (IOException e) {
e.printStackTrace(); }
session.close();
---------------------------------------------------------------------
oracle sql语句:
select STREAM_DATA from pub_info_files
STREAM_DATA:blob类型
insert into T (image) values( (select STREAM_DATA from pub_info_files));
if调用函数:select 函数名(STREAM_DATA) from pub_info_files
分享到:
相关推荐
flink-sql-connector-oracle-cdc 2.5-SNAPSHOT
### Pro Oracle SQL - 成为SQL语言编写专家 #### 核心概念回顾与SQL语言能力介绍 本书《Pro Oracle SQL》由Karen Morton、Kerry Osborne、Robyn Sands、Riyaj Shamsudeen 和 Jared Still 共同撰写,旨在帮助读者...
Oracle-SQL-Developer-使用教程
flinkcdc oracle 2.3.0
### SQL-SERVER-64位配置ORACLE连接-中文乱码问题 在IT行业中,不同数据库之间的连接配置是一项常见的任务,特别是在需要实现跨平台数据交换的场景下。本文将详细介绍如何解决64位系统下的SQL Server连接Oracle...
本文档“oracle-SQL-note.rar_oracle”显然是一份关于Oracle SQL的练习集,旨在帮助用户深入理解和熟练掌握SQL的基本语法和用法。 首先,SQL(Structured Query Language,结构化查询语言)是所有关系型数据库管理...
### Oracle SQL:核心参考知识点详解 #### 一、概述 《Oracle SQL:核心参考》(Oracle SQL: The Essential Reference)是一本由David C. Kreines撰写的书籍,于2000年由O'Reilly出版社出版。该书为Oracle SQL的...
通过使用SQL方言包,MyBatis能够更好地适应各种数据库,如MySQL、Oracle和DB2,使得在切换数据库时无需对SQL语句进行大量修改。 1. **MyBatis框架概述** MyBatis是一个轻量级的ORM(对象关系映射)框架,它消除了...
oracle-sql-select语句的使用方法.doc
这个压缩包“Oracle-PL/SQL-windows-32位-客户端”包含了Oracle数据库32位客户端所需的组件,主要用于在Windows环境下进行数据库管理和开发工作。 1. **Oracle Instant Client**: `instantclient_11_2`是Oracle ...
在本配置参考中,我们将探讨如何使用Oracle GoldenGate(简称OGG)来实现SQL Server到Oracle,MySQL到Oracle以及MySQL到MySQL的同步配置。 1. SQL Server到Oracle的同步配置: - 首先,你需要在SQL Server上安装并...
Oracle-SQL-练习题及答案.doc
liferay-portal-sql-oracle-10-5.2.3.dmp
Oracle Database 12C-SQL-Chp4
Oracle SQL Developer 是一款为数据库管理和开发而设计的免费图形化工具,它提供了强大的数据库浏览、SQL语句执行、SQL脚本运行、PL/SQL编辑与调试、报表运行和自定义报表创建等功能。通过这些功能,Oracle SQL ...
This book is the definitive reference on PL/SQL, considered throughout the database community to be the best Oracle programming book available. Like its predecessors, this fifth edition of Oracle PL/...
oracle和SQL-Server区别
Oracle ASM(Automatic Storage Management)是Oracle数据库系统中的一个组件,用于提供高效、自动化的存储管理功能。在Linux环境中安装Oracle 11g数据库时,ASM是必不可少的一部分,它可以帮助管理员轻松管理和配置...
Oracle OCP SQL-1Z0-071培训方案,总计14章,两天课程安排。 《OCA Oracle Database SQL认证考试指南(1Z0-071)》完整覆盖1Z0-071的全部目标,包含的主题如下: ●DDL和SQL SELECT语句 ●相关数据分组 ●对数据...