一、Oracle的基本数据类型
1.字符数据类型
CHAR:定长字符串,默认长度1B,最大长度255B
VARCHAR2:变长字符串,必须指定最大字节数,最大长度2000B
LONG:变长字符串,最大长度2G。一个表中最多只有一个LONG列,LONG列不能有索引,不能出现完整性约束。
2.数字数据类型
NUMBER:存储零、正负定点数或浮点数,最大进度38位。语法:NUMBER(P,S) P表示总的数字数,S表示小数点右边的数字位。
FLOAT:指定浮点数
DATE:用于存储日期和时间信息。若要指定日期值,须用TO_DATE()将字符型的值或数值转化为日期型的值。日期型数据的默认格式为DD-MON-YY
RAW及LONG RAW:存储字符串、浮点数、二进制数据等。RAW数据仅可存储和检索,不能执行串操作。
ROWID:数据库表中的一个伪列。数据库中每一行都有一个地址,可通过查询ROWID获得行地址。值为16进制字符串。
BLOB:二进制数据可以存储到不同的表空间中。
CLOB:字符型数据可以存储到不同的表空间中。
BFILE:二进制文件可以存储在服务器上的外部文件中。
二、BLOB与CLOB操作案例
1、 get
CLOB
//获得数据库连接
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:
//获得数据库连接
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()];
inStream.read(data);
inStream.close();
}
inStream.close();
con.commit();
con.close();
2、 put
CLOB
//获得数据库连接
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
//获得数据库连接
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();
相关推荐
在数据库管理领域,BLOB(Binary Large Object)和CLOB(Character Large Object)是两种用于存储大量非结构化数据的数据类型。它们都是Oracle数据库中重要的字段类型,用于处理大数据量的文本或二进制文件。了解...
在JDBC(Java Database Connectivity)编程中,Blob和Clob是非常重要的数据类型。Blob(Binary Large Object)主要用于存储二进制大对象,如图像、音频文件等;而Clob(Character Large Object)则用于存储大量的文本...
Blob(Binary Large Object)和Clob(Character Large Object)是数据库中用来存储大量二进制数据和字符数据的两种特殊类型。在Java编程语言中,它们是`java.sql.Blob`和`java.sql.Clob`接口的实现,常用于与数据库...
### Oracle中的BLOB和CLOB的区别 在Oracle数据库中,`BLOB`(Binary Large Object)和`CLOB`(Character Large Object)是用于存储大量数据的两种特殊数据类型。这两种类型都属于`LOB`(Large Object)类别,主要...
- **兼容性**:不是所有SOAP服务端和客户端都支持MTOM,因此在设计系统时要考虑兼容性问题,确保客户端和服务端都能正确解析和处理包含BLOB和CLOB的SOAP消息。 综上所述,处理SOAP中的BLOB和CLOB数据需要理解编码...
在Oracle8i版本中,数据库支持了大型对象(LOB)类型,包括BLOB(Binary Large Object)和CLOB(Character Large Object)。这两种数据类型用于存储大量二进制数据(如图片、视频或文档)和文本数据(如长篇文章或...
然后可以通过`getClob`和`getBlob`方法分别获取Clob和Blob数据,接着利用`getCharacterStream`和`getBinaryStream`方法将数据转换为适合处理的流形式。 #### 七、总结 本文详细介绍了如何在JDBC中操作Blob和Clob...
标题“jdbc_blob_clob.rar”暗示了这个压缩包文件包含的内容与Java Database Connectivity (JDBC) 中处理Blob和Clob对象相关的知识。Blob是Binary Large Object的缩写,用于存储大块二进制数据,如图片、音频或视频...
Blob和Clob是Java中用于处理大数据类型的数据对象,Blob用于存储二进制大对象,如图片、音频或视频,而Clob则用于存储字符大对象,如长文本。本文将详细介绍如何在Hibernate中操作Blob和Clob字段,实现数据的存储与...
### Oracle Blob转换Clob ...通过以上内容的学习,可以了解到如何在Oracle数据库中实现Blob到Clob的转换过程,以及相关的注意事项和技术细节。这对于处理大数据量下的不同类型数据转换具有重要意义。
在Java的持久化框架Hibernate中,处理大数据类型如BLOB(Binary Large Object)和CLOB(Character Large Object)是一项常见的任务。BLOB用于存储二进制数据,如图片、视频或文档,而CLOB则用于存储大文本数据,如...
CLOB 和 BLOB 的主要区别是:CLOB 使用 CHAR 来保存数据,而 BLOB 使用二进制保存数据。CLOB 主要用于存储字符数据,而 BLOB 主要用于存储二进制数据。 在 MySQL 中,BLOB 是个类型系列,包括:TinyBlob、Blob、...
在数据库迁移或数据同步的过程中,有时需要将含有大对象(LOB,包括BLOB和CLOB)的数据从一个数据库系统复制到另一个不完全支持LOB的数据库系统。本例中,我们讨论如何将DB2数据库中的BLOB数据类型复制到Oracle...
这篇博客“使用Jdbc4操作Blob,Clob”将深入讲解如何利用JDBC4 API来处理Blob和Clob对象。 Blob通常用于存储二进制数据,如图片、音频或视频文件,而Clob则用于存储大量文本数据,如长篇的文本或XML文档。在JDBC4中...
在Java的持久化框架Hibernate中,BLOB和CLOB是用来处理大数据对象(Binary Large Object和Character Large Object)的。这两个类型常用于存储图像、视频、大文本等数据,因为它们可以容纳超过数据库标准列大小限制的...
spring 中对大数据的处理,包括clob,blob的数据。比之jdbc下简便很多。
为了将BLOB转换为CLOB,我们需要考虑数据大小和处理效率。在示例代码中,`blob_to_clob`函数首先创建了一个临时的CLOB变量`v_clob`。然后,通过`DBMS_LOB.GETLENGTH`获取BLOB的总长度,计算出需要处理的次数`tmp_num...