编程软件:IntelliJ IDEA 2018.3 x64
应用环境:JDK1.8
人生名言:今天你是否成功取决于你昨天的态度,今天的态度决定了你明天是否成功。
技术总结:
6.1 LOB数据类型概述(注意:存路径) #### 由于无结构的数据往往都是大型的,存储量非常大,而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设定一个会话最多可同时打开的文件最大数. # 使用LOB类型数据的限制: ### 系统不支持分布式LOB,用户不能在SELECT子句或WHERE子句中使用远程LOB定位器,也不能在DBMS_LOB包的子程序中使用远程定位器,也不能引用包含LOB属性的远程表中的对象. ### LOB列不能用于聚集表. ### LOB列不能出现在查询语句的GROUP BY,ORDER BY ,DISTINCT(去重复)之后,也不允许出现在分组函数和连接函数中. ### LOB类型不能出现在数组的定义中. ### LOB类型不能够出现在建有分区索引的表中. ### NCLOB类型不能作为对象类型的属性,当可以作为对象类型的方法的参数类型. IOE IBM DB2 Oracle MySQL 不同的数据库系统提供大对象数据类型有所不同,上面我们介绍了Oracle数据库系统(DBA)用于存储大对象数据的相关数据类型,
那么MySQL数据库和SQLServer2012数据库系统又使用哪些类型来存储这些LOB类型数据呢? MySQL数据库系统又使用了哪些类型来存储这些LOB类型数据呢? MySQLAB 对应Oracle用于存储LOB类型数据的数据类型: 十个亿 MariaDB MySQL BLOB和TEXT类型; MySQL的BLOB与LONBBLOB类型对应于Oracle的BLOB数据类型,而MySQL数据库的TEXT/LONGTEXT可以用于存储与Oracle数据库系统提供的CLOB类型数据. SQLServer2012数据库存储LOB类型的数据类型有:TEXT,VARBINARY,和IMAGE类型等,其中TEXT类型对应于Oracle数据库中的CLOB类型,
而VARBINARY和IMAGE类型对应于Oracle中的BLOB类型.
代码展示:
package Demo1; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.SQLException; public class DButil { static{ try { Class.forName("com.mysql.jdbc.Driver"); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public static Connection getConnection(){ try { Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/CLOB" ,"root",null); return con; } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; } public static void closeConnection(Connection con){ try { con.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public static int update(String sql,Object...arr){ Connection con = getConnection(); try { PreparedStatement pt = con.prepareStatement(sql); for (int i = 0; i < arr.length; i++) { pt.setObject(i+1, arr[i]); } return pt.executeUpdate(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return -1; } } package Demo1; 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 JDBCMysqlDemo1 { public static void main(String[] args) { Connection con = DButil.getConnection(); String sql = "insert into textclob values(?,?,?)"; try { PreparedStatement pt = con.prepareStatement(sql); InputStream ip = new FileInputStream(new File("D:\\4399\\dzs.jpg")); pt.setObject(1,3); pt.setObject(2,"dzs.jpg"); pt.setObject(3,ip); int i = pt.executeUpdate(); if (i>0){ System.out.println("添加成功"); }else System.out.println("添加失败"); } catch (Exception e) { e.printStackTrace(); } } } package Demo1; import java.io.*; import java.sql.*; import java.util.Scanner; public class JDBCMysqlDemo2 { public static void main(String[] args) { Connection con = DButil.getConnection(); String sql = "select * from textclob where cid = ?"; try { PreparedStatement pt = con.prepareStatement(sql); pt.setObject(1,2); ResultSet rt = pt.executeQuery(); if(rt.next()){ int cid = rt.getInt("cid"); String cname = rt.getString("cname"); InputStream notes = rt.getAsciiStream("notes"); OutputStream bufferedWriter = new FileOutputStream(new File("D:\\4399\\dzs2.jpg")) { @Override public void write(int b) throws IOException { } }; byte[]arr = new byte[notes.available()]; while(notes.read(arr)!=-1){ bufferedWriter.write(arr); } } } catch (Exception e) { e.printStackTrace(); } } }
心得:
每一件事都要用多方面的角度来看它!