由于无结构的数据往往都是大型的,存储量非常大,而LOB(large object)类型主要用来支持无结构的大型数据.用户可以用LOB数据类型来存储大型的无结构数据,特别是文本,图形,视频和音频等多媒体数据,系统还提供了随机访问这些LOB类型数据的有效办法.

LOB数据类型可以分为以下几种:Oracle sun mysql jdk

  1. BLOB:二进制LOB类型,用户存放无结构的二进制数据,最大4GB. binary 二进制

  2. CLOB:字符LOB类型,用于存放字符数据,最大可以存储4GB. char character lob

  3. NLOB:字符LOB类型,和CLOB相同,支持国家字符集.多字符集 GBK

  4. BFILE:二进制文件类型,与数据库外的操作系统文件相关联,该文件存储二进制大对象.

对于BLOB和CLOB数据,表中存储的是指向该LOB数据的定位器,对于BFILE(数据存放在数据库的操作系统文件上),表中存储的是指向外部文件的定位器.BLOB和CLOB数据类型属于Oracle内部数据类型,存储在数据库的表空间中,在事务中可以使用DBMS_LOB包过程/PL/SQL程序或OCI程序修改,可以提交或回滚修改.而BFILE数据是只读的.

BFILE类型仅提供随机读取数据,事务不能保证该类型的完整性,数据的完整性和可用性要在操作系统下维护.

DBA要保证文件的存在和访问权限.初始化参数SESSION_MAX_OPEN_FILES设定一个会话最多可同时打开的文件最大数.

 

下面我们将介绍MySQL数据库对LOB类型数据的存取(读写)操作. 

package com.guigu.jdbc;

import java.sql.*;

public class MySQLConnectionUtil {
private static String DRIVER="com.mysql.jdbc.Driver";
private static String URL="jdbc:mysql://127.0.0.1:3306/lob";
private static String USERNAME="root";
private static String PASSWORD="123456";

public static Connection getConnection(){
Connection connection=null;
try {
Class.forName(DRIVER);
connection= DriverManager.getConnection(URL,USERNAME,PASSWORD);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return connection;
}

public static void close(Connection connection, PreparedStatement preparedStatement, ResultSet resultSet){

try {
if(resultSet!=null){
resultSet.close();
}
if (preparedStatement!=null){
preparedStatement.close();
}
if (connection!=null){
connection.close();
}
} catch (SQLException e) {
e.printStackTrace();
}

}
}

 

Posted on 2020-09-04 17:58  脸红嘛宝贝  阅读(778)  评论(0编辑  收藏  举报