`
zlotus
  • 浏览: 54214 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

oracle Sql-blobclob

    博客分类:
  • Db
阅读更多

CLOB: 用来存储单字节的字符数据

BLOB: 用于存储二进制数据

 ------------------------------------------------------------------------------------------------

API:

clob

 

 Reader getCharacterStream()
          以 java.io.Reader 对象形式(或字符流形式)检索此 Clob 对象指定的 CLOB

 

Writer setCharacterStream(long pos)
          检索用于将 Unicode 字符流写入此 Clob 对象表示的 CLOB 值中(位置 pos 处)的流。

 

long length()
          检索此 Clob 对象指定的 CLOB 值中的字符数。

 

 

blob

 

 

InputStream getBinaryStream()
          以流的形式检索此 Blob 实例指定的 BLOB 值。

 

byte[] getBytes(long pos, int length)
          以字节数组的形式检索此 Blob 对象表示的全部或部分 BLOB 值。
 long length()
          返回由此 Blob 对象指定的 BLOB 值中的字节数。

 

OutputStream setBinaryStream(long pos)
          检索用于写入此 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好象是连接inputStreamoutputStream的一个东西

 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.jar

    flink-sql-connector-oracle-cdc 2.5-SNAPSHOT

    Pro Oracle SQL-成为SQL语言编写专家

    ### Pro Oracle SQL - 成为SQL语言编写专家 #### 核心概念回顾与SQL语言能力介绍 本书《Pro Oracle SQL》由Karen Morton、Kerry Osborne、Robyn Sands、Riyaj Shamsudeen 和 Jared Still 共同撰写,旨在帮助读者...

    Oracle-SQL-Developer-使用教程

    Oracle-SQL-Developer-使用教程

    flink-sql-connector-oracle-cdc-2.3.0.jar

    flinkcdc oracle 2.3.0

    SQL-SERVER-64位配置ORACLE连接-中文乱码问题

    ### SQL-SERVER-64位配置ORACLE连接-中文乱码问题 在IT行业中,不同数据库之间的连接配置是一项常见的任务,特别是在需要实现跨平台数据交换的场景下。本文将详细介绍如何解决64位系统下的SQL Server连接Oracle...

    oracle-SQL-note.rar_oracle

    本文档“oracle-SQL-note.rar_oracle”显然是一份关于Oracle SQL的练习集,旨在帮助用户深入理解和熟练掌握SQL的基本语法和用法。 首先,SQL(Structured Query Language,结构化查询语言)是所有关系型数据库管理...

    oracle-sql-the-essential-reference

    ### Oracle SQL:核心参考知识点详解 #### 一、概述 《Oracle SQL:核心参考》(Oracle SQL: The Essential Reference)是一本由David C. Kreines撰写的书籍,于2000年由O'Reilly出版社出版。该书为Oracle SQL的...

    mybatis-sql-dialect

    通过使用SQL方言包,MyBatis能够更好地适应各种数据库,如MySQL、Oracle和DB2,使得在切换数据库时无需对SQL语句进行大量修改。 1. **MyBatis框架概述** MyBatis是一个轻量级的ORM(对象关系映射)框架,它消除了...

    oracle-sql-select语句的使用方法.doc

    oracle-sql-select语句的使用方法.doc

    Oracle-PL/SQL-windows-32位-客户端

    这个压缩包“Oracle-PL/SQL-windows-32位-客户端”包含了Oracle数据库32位客户端所需的组件,主要用于在Windows环境下进行数据库管理和开发工作。 1. **Oracle Instant Client**: `instantclient_11_2`是Oracle ...

    ogg sqlserver-oracle mysql-oracle mysql-mysql的同步配置参考

    在本配置参考中,我们将探讨如何使用Oracle GoldenGate(简称OGG)来实现SQL Server到Oracle,MySQL到Oracle以及MySQL到MySQL的同步配置。 1. SQL Server到Oracle的同步配置: - 首先,你需要在SQL Server上安装并...

    Oracle-SQL-练习题及答案.doc

    Oracle-SQL-练习题及答案.doc

    liferay-portal-sql-oracle-10-5.2.3.dmp

    liferay-portal-sql-oracle-10-5.2.3.dmp

    Oracle Database 12C-SQL-Chp4

    Oracle Database 12C-SQL-Chp4

    Oracle-SQL-Developer 操作指南

    Oracle SQL Developer 是一款为数据库管理和开发而设计的免费图形化工具,它提供了强大的数据库浏览、SQL语句执行、SQL脚本运行、PL/SQL编辑与调试、报表运行和自定义报表创建等功能。通过这些功能,Oracle SQL ...

    oracle-pl-sql-programming-5th-edition

    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的语法区别.doc

    oracle和SQL-Server区别

    kmod-oracleasm-2.0.6.rh1-3.el6.x86_64.rpm

    Oracle ASM(Automatic Storage Management)是Oracle数据库系统中的一个组件,用于提供高效、自动化的存储管理功能。在Linux环境中安装Oracle 11g数据库时,ASM是必不可少的一部分,它可以帮助管理员轻松管理和配置...

    Oracle OCP SQL-1Z0-071培训方案.xlsx

    Oracle OCP SQL-1Z0-071培训方案,总计14章,两天课程安排。 《OCA Oracle Database SQL认证考试指南(1Z0-071)》完整覆盖1Z0-071的全部目标,包含的主题如下: ●DDL和SQL SELECT语句 ●相关数据分组 ●对数据...

Global site tag (gtag.js) - Google Analytics