Oarcle中的LOB类型

1.在Oracle中,LOB(Large Object,大型对象)类型的字段现在用得越来越多了。因为这种类型的字段,容量大(最多能容纳4GB的数据),且一个表中可以有多个这种类型的字段,很灵活,适用于数据量非常大的业务领域(如图象、档案等)。

2.LOB类型分为BLOB和CLOB两种:BLOB即二进制大型对象(Binary Large Object),适用于存贮非文本的字节流数据(如程序、图象、影音等)。

3.而CLOB,即字符型大型对象(Character Large Object),则与字符集相关,适于存贮文本型的数据(如历史档案、大部头著作等)。

DB中使用CLOB类型字段

(一)、创建表(使用sql或者直接在PL/SQL客户端创建),字段类型CLOB

create table TEMP
(
name VARCHAR2(200),
age NUMBER,
temp_clob CLOB
)
tablespace INSIGHTDATA3_TS
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 160K
next 1M
minextents 1
maxextents unlimited
);
package com.lanqiao.shopping.test;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException; import com.lanqiao.shopping.utils.DBHelper; public class Test {
static PreparedStatement pstmt = null;
static ResultSet rs = null;
/*
* 创建图片的表myPicture
* create table myPicture(id number(4) primary key,img blob);
*/ //将图片写进数据库
public static void writeImgToBolb(){
Connection conn = DBHelper.getConn();
String sql = "insert into myPicture(id,img) values(?,?)"; try {
pstmt = conn.prepareStatement(sql);
pstmt.setInt(1,3);//id //将图片转为输入流
File file = new File("D:\\Eclipse\\ImagesSave\\one.jpg");
InputStream in = new FileInputStream(file); /*
String a = "sss";
System.out.println(a.length());//字符串是length方法
int[] i = new int[5];//数组是length属性
System.out.println(i.length);*/ //将输入流写入到myPicture表
pstmt.setBinaryStream(2, in,(int)file.length()); int result = pstmt.executeUpdate();
System.out.println("111");
if(result>0){
System.out.println("图片写入成功");
}else{
System.out.println("图片写入失败");
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
DBHelper.closeConn(null, pstmt, conn);
} } //从数据库读取图片
public static void readImgToBlob(){
Connection conn = DBHelper.getConn();
String sql = "select * from myPicture where id=?";
try {
pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, 1);//id =1
rs = pstmt.executeQuery();
if(rs.next()){
//将图片从数据库中读取出来,类型为InputStream
InputStream imgIn = rs.getBinaryStream("img"); //通过IO流,将图片写到项目中(硬盘)
InputStream in = new BufferedInputStream(imgIn); //将图片的输出路径设置为src(相对路径),图片名为myPic.png
OutputStream imgOut = new FileOutputStream("D:\\Eclipse\\ImagesSave\\myPic.jpg");
OutputStream out = new BufferedOutputStream(imgOut); int len = -1;
while((len=in.read())!=-1){
out.write(len);
} imgOut.close();
out.close();
imgIn.close();
in.close();
System.out.println("照片读取成功"); }
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
DBHelper.closeConn(rs, pstmt, conn);
} } public static void main(String[] args) {
//writeImgToBolb();
readImgToBlob();
}
}

2018.7.23 oracle中的CLOB数据类型的更多相关文章

  1. Oracle中的日期数据类型

    TimeStamp日期类型 TimeStamp数据类型用于存储日期的年.月.日,以及时间的小时.分和秒,其中秒值精确到小数点后6位,该数据类型 同时包含时区信息.systimestamp函数的功能是返 ...

  2. Spring+Hibernate+Oracle中的Clob操作配置

    bean对象配置: <!-- 此处用于指定当前JDBC的实现,详见下面注解① --> <bean id="nativeJdbcExtractor" class=& ...

  3. Oracle中的基本数据类型

    一.Oracle 基本数据类型 1.字符数据类型 CHAR:存储固定长度的字符串,如果没有指定长度,默认为1个字节,如果数据长度没有达到指定的长度,则通过填充空格的方式来使其达到定义的长度(CHAR类 ...

  4. oracle中关于clob类型字段的查询效率问题

    今天,公司项目某个模块的导出报如下错误: HTTP Status 500 – Internal Server Error Type Exception Report Message Handler d ...

  5. oracle中select clob的返回类型

    当select的字段是clob类型的数据时,但是数据长度在2000字节到4000字节时,默认转为long类型. 所以当用insert into select的时候,预期插入的是clob类型,但是报or ...

  6. 2018/08/23 cstring中memset()函数的运用

    好多东西其实以前已经查过了,然后当时理解的还行,可是过段时间没用有些又会忘记,然后又去找资料又查,浪费了不少的时间和精力,所以,我,曾国强,今天起,要好好做笔记了! 今天复习第一个知识点,为什么要叫复 ...

  7. SQLserver和oracle中对应的数据类型

  8. Oracle中table数据数据类型

    function F_ReturnDescription(varID in varchar2) return varchar2 is numDataCount ); mytable ly_family ...

  9. 【Oracle】Oracle中复合数据类型

    1,常见的操作数据库的技术有那些 jdbc     使用java 访问数据库的技术    PLSQL  (procedure  过程化sql) 在数据库内部操作数据的技术    proc/c++    ...

随机推荐

  1. 【ACM】小猴子下落

    小猴子下落 时间限制:3000 ms  |  内存限制:65535 KB 难度:3   描述 有一颗二叉树,最大深度为D,且所有叶子的深度都相同.所有结点从左到右从上到下的编号为1,2,3,····· ...

  2. spring boot——常用注解

    @SpringBootApplication:申明让spring boot自动给程序进行必要的配置,这个配置等同于:@Configuration ,@EnableAutoConfiguration 和 ...

  3. loadrunner学习--基础知识

    性能测试相关术语: 1.响应时间:指系统从发出请求开始到客户端接受到所有数据所消耗的时间. 2.并发用户:指同一时刻与服务器进行数据交互的所有用户数量.计算公式F=Nvu x R/T 其中F表示吞吐量 ...

  4. 正确理解ThreadLocal:ThreadLocal中的值并不一定是完全隔离的

    首先再讨论题主的这个观点之前我们要明确一下ThreadLocal的用途是什么? ThreadLocal并不是用来解决共享对象的多线程访问问题. 看了许多有关ThreadLocal的博客,看完之后会给人 ...

  5. Django重新整理

    1.母版的继承 #base<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset ...

  6. PHP编码的规范性

         为了提高工作效率,保证开发的有效性和合理性,并最大程度提高程序代码的可读性和可重复利用性,提高沟通效率,需要一份代码编辑规范.         一.文件标记:            1.所有 ...

  7. 使用cookie的注意事项

    一.什么是cookie? Cookie(复数形态Cookies),中文名称为小型文本文件或小甜饼[1],指某些网站为了辨别用户身份而储存在用户本地终端(Client Side)上的数据(通常经过加密) ...

  8. jQuery Validate验证框架详解(转)

    jQuery校验官网地址:http://bassistance.de/jquery-plugins/jquery-plugin-validation 一.导入js库 <script type=& ...

  9. Android 程序结构介绍

    创建好Android开发环境后,创建一个Android Project, 截图如下:

  10. mysql 将null转代为0(转)

    1.如果为空返回0 select ifnull(null,0) 2.如果为空返回0,否则返回1 select if(isnull(col),0,1) as col. MYSQL 中的IFNULL函数 ...