Oracle的Blob数据类型解析(bloboracle)
Oracle的Blob数据类型解析
Oracle数据库提供了丰富而多样的数据类型,这里我们将就其中一种Blob类型做一个讨论。
Blob类型(Binary Large Object)是Oracle允许用户将大尺寸的二进制数据存放在数据库中的一种数据类型,这种数据通常是不可见的,如图片、可执行文件、文档等等,虽然数据库中存储的是二进制数据,但是一般情况下,它们并不会使用Blob类型,而是使用他们可以可见的字符串格式表达,这样才能更好的保存索引以及搜索。
Blob类型可以使用两种方式存取读取:
(1) 在SQL语句中我们可以使用语句SELECT * FROM table_name WHERE Blob_column IS NOT NULL来检索带有Blob类型属性的记录;
(2) 通过JDBC API可以使用函数read()返回Blob类型的实例数据。
示例(JDBC API):
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(“SELECT Blob_column FROM table_name WHERE Blob_column IS NOT NULL”);
//检索到Blob类型的记录
while (rs.next()) {
Blob blob = rs.getBlob(“Blob_column”);
InputStream is = blob.getBinaryStream();
int length = (int)blob.length();
byte[] bytes = new byte[length];
int offset = 0;
int byteRead = 0;
while(offset =0) {
offset += byteRead;
}
//此时bytes即为检索出来的Blob
}
总结起来,Oracle的Blob类型可以用来存储大尺寸的二进制类型,不需要在保存字符格式,提供了select语句和JDBC API实例数据的两种方式存取读取,这对于存储大量非可见数据以及进行高效索引和搜索是非常有用的。