zoukankan      html  css  js  c++  java
  • 大对象数据LoB的应用

    大对象数据LoB的应用

    • LOB数据类型概述

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

      1. BLOB:二进制LOB类型,用户存放无结构的二进制数据,最大4GB. binary 二进制
      2. CLOB:字符LOB类型,用于存放字符数据,最大可以存储4GB.
      3. NLOB:字符LOB类型,和CLOB相同,支持国家字符集.多字符集 GBK
      4. BFILE:二进制文件类型,与数据库外的操作系统文件相关联,该文件存储二进制大对象.
    • 使用LOB类型数据的限制:

      1. 系统不支持分布式LOB,用户不能在SELECT子句或WHERE子句中使用远程LOB定位器,也不能在DBMS_LOB包的子程序中使用远程定位器,也不能引用包含LOB属性的远程表中的对象.
      2. LOB列不能用于聚集表.
      3. LOB列不能出现在查询语句的GROUP BY,ORDER BY ,DISTINCT(去重复)之后,也不允许出现在分组函数和连接函数中.
      4. LOB类型不能出现在数组的定义中.
      5. LOB类型不能够出现在建有分区索引的表中.
      6. NCLOB类型不能作为对象类型的属性,当可以作为对象类型的方法的参数类型.
    • 下面我们将运用Mysql数据库对LOB类型数据进行存取操作:

      1. 数据库代码展示:

        CREATE DATABASE lob;

        USE lob;

        CREATE TABLE TEXTCLOB(

        CID INT NOT NULL PRIMARY KEY,

        CNAME VARCHAR(20),

        NOTES LONGTEXT

        );

        SELECT * FROM TEXTCLOB;
      2. DBUtil工具类代码展示:

        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();
                  }

          }
        }
      3. main主程序类代码展示:

        package com.guigu.jdbc;

        import java.io.File;
        import java.io.FileInputStream;
        import java.io.FileNotFoundException;
        import java.io.InputStream;
        import java.sql.Connection;
        import java.sql.PreparedStatement;
        import java.sql.SQLException;

        public class JDBCMySQLCOLBWriter {
          public static void main(String[] args) {
              String sql="INSERT INTO TEXTCLOB VALUES (?,?,?)";
              Connection connection=MySQLConnectionUtil.getConnection();
              PreparedStatement preparedStatement=null;
              try {
                    preparedStatement=connection.prepareStatement(sql);
                    File file =new File("D:/workspace/site.txt");
                    //使用输入流读写文本文件
                  InputStream inputStream=new FileInputStream(file);
                  //加载SQL语句中VALUES占位符参数
                  preparedStatement.setInt(1,1);
                  preparedStatement.setString(2,"site.txt");
                  preparedStatement.setAsciiStream(3,inputStream);
                  int count = preparedStatement.executeUpdate();
                  if(count>0){
                      System.out.println("数据插入成功");
                  }else{
                      System.out.println("数据插入失败");
                  }

              } catch (SQLException e) {
                  e.printStackTrace();
              } catch (FileNotFoundException e) {
                  e.printStackTrace();
              }finally {
                  MySQLConnectionUtil.close(connection,preparedStatement,null);
              }
          }
        }
      4. 控制台展示:

         

      5. Mysql数据库查询结果:

         

    • 心得

      活到老学到老,愿我们前程似锦,学海无边,早日实现财富自由
  • 相关阅读:
    四则运算单元测试
    四则运算2
    课堂记录
    软件工程第一课,设计简单小学四则运算
    阅读计计计计计计划
    团队开发——冲刺1.a
    博客园之用户体验
    软件项目风险评估计划
    《人月神话》读书笔记 第2篇
    课堂作业——找1
  • 原文地址:https://www.cnblogs.com/xiaojieDeam/p/13614814.html
Copyright © 2011-2022 走看看