JavaEE JDBC 读写LOB大对象
JDBC 读写LOB大对象
@author ixenos
LOB
除了数字、字符串和日期之外,许多数据库还可以存储大对象,例如图片或其他数据,
在SQL中,二进制(字节型)大对象称为BLOB,字符型大对象称为CLOB
读取LOB流程
i. 执行SELECT语句
ii. ResultSet调用getBlob或getClob方法获取Blob或Clob类型的对象
iii. Blob调用getBytes或getInputStream方法获取Image等对象
iv. 代码如下:
PreparedStatement stat = conn.prepareStatement(“SELECT Cover FROM BookCovers WHERE ISBN=?”);
stat.set(1, isbn);
ResultSet result = stat.executeQuery();
If(result.next()){
//从ResultSet中获取Blob对象
Blob coverBlob = result.getBlob(1);
//Blob对象打开字节流,获取数据
Image coverImage = ImageIO.read(coverBlob.getBinaryStream());
}
v. 同理,Clob调用getSubString或getCharacterStream来获取字符数据
存储LOB对象到数据库流程
i. 在Connection对象上调用createBlob或createClob得到空的Blob、Clob
ii. 从Blob、Clob获取该LOB的输出流或写出器
iii. 将数据通过输出流写出数据到LOB对象中
iv. 将该LOB对象存储到数据库中
v. 代码如下:
Blob coverBlob = conn.createBlob(); int offset = 0; OutputStream out = coverBlob.setBinaryStream(offset);
//将Image对象coverImage的数据用二进制流输出到Blob对象中
ImageIO.write(coverImage, “PNG”, out); PreparedStatement stat = conn.prepareStatement(“INSERT INTO Cover VALUES (?,?)”); stat.set(1, isbn);
//将Blob对象插入数据库中
stat.set(2, coverBlob); stat.executeUpdate();
注意
从数据库中读取一个LOB或数组(SQL数组指值的序列,在java中是java.sql.array)时,并不等于获取了它的实际内容,
只有在访问具体的值时,它们才会从数据库中被读取出来,这对改善性能有好处,因为通常这些数据的数据量都非常大
JavaEE JDBC 读写LOB大对象的更多相关文章
- [转帖]Oracle数据库lob大对象数据类型字段总结,值得收藏
Oracle数据库lob大对象数据类型字段总结,值得收藏 原创 波波说运维 2019-07-11 00:02:00 https://www.toutiao.com/i67108943269703357 ...
- Oracle LOB 大对象处理
LOB类型列主要是用来存储大量数据的数据库字段,最大可以存储4G字节的非结构化数据. 一.LOB数据类型分类 1.按存储数据的类型分: ①字符类型: CLOB:存储大量 单字节 字符数据. N ...
- 大对象数据LOB的应用
概述 由于无结构的数据往往都是大型的,存储量特别大,而LOB(large object)类型主要用来支持无结构的大型数据. 用户可以利用LOB数据类型来存储大型的无结构数据,特别是文本,图形,视频和音 ...
- Spring 让 LOB 数据操作变得简单易行,LOB 代表大对象数据,包括 BLOB 和 CLOB 两种类型
转自:https://www.ibm.com/developerworks/cn/java/j-lo-spring-lob/index.html 概述 LOB 代表大对象数据,包括 BLOB 和 CL ...
- JDBC读写MySQL的大字段数据
JDBC读写MySQL的大字段数据 不管你是新手还是老手,大字段数据的操作常常令你感到很头痛.因为大字段有些特殊,不同数据库处理的方式不一样,大字段的操作常常是以流的方式 来处理的.而非一般的字段 ...
- 大对象数据LOB的应用(Day_10)
当你有永不放弃的精神,全力以赴的态度,你会惊叹自己也能创造奇迹! LOB数据类型概述 由于于无结构的数据往往都是大型的,存储量非常大,而LOB(large object)类型主要用来支持无结构的大型数 ...
- JDBC:数据库操作:处理大对象CLOB数据
目标: 了解大对象处理基本原理, 掌握CLOB数据的读,写操作. 可以使用CLOB类处理大文本数据. 大对象处理主要指CLOB和BLOB两种类型字段.可以大量存储文字. 要想在程序中处理这样的大数据操 ...
- Oracle数据库中的大对象(LOB)数据类型介绍
一.LOB数据类型的介绍 大对象(LOB)数据类型允许我们保存和操作非结构化和半结构化数据,如文档.图形图像.视频片段.声音文件和XML文件等.DMBS_LOB 包被设计用于操作 LOB 数据类型.从 ...
- 使用JDBC处理Oracle大数据
一.Oracle中大数据处理 在Oracle中,LOB(Large Object,大型对象)类型的字段现在用得越来越多了.因为这种类型的字段,容量大(最多能容纳4GB的数据),且一个表中可以有多个这种 ...
随机推荐
- Poj 2289 Jamie's Contact Groups (二分+二分图多重匹配)
题目链接: Poj 2289 Jamie's Contact Groups 题目描述: 给出n个人的名单和每个人可以被分到的组,问将n个人分到m个组内,并且人数最多的组人数要尽量少,问人数最多的组有多 ...
- bzoj2002 [Hnoi2010]Bounce 弹飞绵羊【分块】
传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=2002 这一题除了LCT解法,还有一种更巧妙,代码量更少的解法,就是分块.先想,如果仅仅记录每 ...
- 题解报告:hdu 1062 Text Reverse
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1062 Problem Description Ignatius likes to write word ...
- 434 Number of Segments in a String 字符串中的单词数
统计字符串中的单词个数,这里的单词指的是连续的非空字符.请注意,你可以假定字符串里不包括任何不可打印的字符.示例:输入: "Hello, my name is John"输出: 5 ...
- SharePoint2013升级SP1后,运行配置向导报错:未注册sharepoint服务
SharePoint Server 2013 升级SP1后,需要重新运行配置向导,但是运行过程中报错:未注册sharepoint服务. 日志详细错误信息: 已引发类型为 Microsoft.Share ...
- vim快捷键参考
一. 移动: h,j,k,l: 左,下,上,右. w: 下一个词的词首.W:下一个单词(不含标点). e:下一个词的词尾.E:不含标点. b:上一个词的词首.B:不含标点. <>: v 模 ...
- JDK11源码分析之集合类(一)----HashMap
一,首先需要拉取JDK11源码: 方便起见我给出芋道源码作者已经拉取好的openJDK11的GitHub地址只需要fork一下克隆到本地导入IDEA中就可以对源码分析了: https://github ...
- hihocoder1705 座位问题
思路: 使用堆模拟.复习了priority_queue自定义结构体比较函数的用法. 实现: #include <bits/stdc++.h> using namespace std; ty ...
- 微信小程序开发初次尝试-----实验应用制作(一)
初次尝试微信小程序开发,在此写下步骤以做记录和分享. 1.在网上找了很多资料,发现这位知乎大神提供的资料非常全面. 链接 https://www.zhihu.com/question/50907897 ...
- 仿陌陌的ios客户端+服务端源码
软件功能:模仿陌陌客户端,功能很相似,注册.登陆.上传照片.浏览照片.浏览查找附近会员.关注.取消关注.聊天.语音和文字聊天,还有拼车和搭车的功能,支持微博分享和查找好友. 后台是php+mysql, ...