jdbc读写lob(blob+clob)

2024-01-08 16:32
文章标签 jdbc 读写 blob clob lob

本文主要是介绍jdbc读写lob(blob+clob),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.说明

           数据库在存储大对象时,一般采用lob。二进制大对象称为blob,字符型大对象称为clob。

2.出库

            从数据库中获取clob采用的方法是rs.getClob(int columnindex);获取blob采用的方法是rs.getBlob(int columnindex).在获取到大字段之后我们可以生成对应的字符流、字节流,然后根据流的方式得到我们想要的结果。(从大对象到流的转换请参考jdk帮助文档blob,clob)

           具体代码如下:

	public static void testReadLob(){
StringBuffer sql = new StringBuffer();
sql.append(" SELECT ID ,CONTENT, IMAGE FROM T_TEST ");
sql.append(" WHERE ID = ? ");
System.out.println("=====sql===="+sql.toString());
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
try{
conn = ConnectionFactory.getConnection();
ps = conn.prepareStatement(sql.toString());
ps.setInt(1, 1);
rs = ps.executeQuery();
while(rs.next()){
Clob clob = rs.getClob(2);
Blob blob = rs.getBlob(3);
System.out.println(clob+"======="+blob);
Reader reader = clob.getCharacterStream();
System.out.println("===content0=="+StringUtil.clobToString(reader));//把获取到得clob转换成字符串
InputStream is = blob.getBinaryStream();//可以生成byte数组或者图片文件
System.out.println("==image==="+FileOperationUtil.formInputStreamToFile								(is, "E:\\cc.jpg",blob.length()));
}
}catch(Exception e){
e.printStackTrace();
}finally{
ConnectionFactory.releaseConnection(conn, ps, rs);
}
}

3.入库

            再写入数据时,首先获取空对象,具体方法是connection.createBlob()、connection.createClob().获取之后可以对空对象进行赋值。

           具体代码如下:

	public static void testInsertLob(){
StringBuffer sql = new StringBuffer();
sql.append(" INSERT INTO T_TEST(ID,CONTENT,IMAGE)VALUES(?,?,?) ");
System.out.println("=====sql===="+sql.toString());
Connection conn = null;
PreparedStatement ps = null;
try{
conn = ConnectionFactory.getConnection();
Blob blob = conn.createBlob();
OutputStream ops = blob.setBinaryStream(1);
InputStream is = new FileInputStream("E:\\cc.jpg");
byte[] bytes = new byte[is.available()];
int count = -1;
while((count=is.read(bytes))!=-1){
ops.write(bytes, 0, count);
}
ops.flush();//注意这个方法一定要执行
System.out.println(blob);
Clob clob = conn.createClob();
String content = "2313dfdafa你好";
clob.setString(1, content);
ps = conn.prepareStatement(sql.toString());
ps.setInt(1, 2);
ps.setClob(2, clob);
ps.setBlob(3, blob);
ps.executeUpdate();
ops.close();
}catch(Exception e){
e.printStackTrace();
}finally{
ConnectionFactory.releaseConnection(conn, ps, null);
}
}


 

这篇关于jdbc读写lob(blob+clob)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/584095

相关文章

SpringBoot实现数据库读写分离的3种方法小结

《SpringBoot实现数据库读写分离的3种方法小结》为了提高系统的读写性能和可用性,读写分离是一种经典的数据库架构模式,在SpringBoot应用中,有多种方式可以实现数据库读写分离,本文将介绍三... 目录一、数据库读写分离概述二、方案一:基于AbstractRoutingDataSource实现动态

Redis中高并发读写性能的深度解析与优化

《Redis中高并发读写性能的深度解析与优化》Redis作为一款高性能的内存数据库,广泛应用于缓存、消息队列、实时统计等场景,本文将深入探讨Redis的读写并发能力,感兴趣的小伙伴可以了解下... 目录引言一、Redis 并发能力概述1.1 Redis 的读写性能1.2 影响 Redis 并发能力的因素二、

Oracle存储过程里操作BLOB的字节数据的办法

《Oracle存储过程里操作BLOB的字节数据的办法》该篇文章介绍了如何在Oracle存储过程中操作BLOB的字节数据,作者研究了如何获取BLOB的字节长度、如何使用DBMS_LOB包进行BLOB操作... 目录一、缘由二、办法2.1 基本操作2.2 DBMS_LOB包2.3 字节级操作与RAW数据类型2.

Python实现高效地读写大型文件

《Python实现高效地读写大型文件》Python如何读写的是大型文件,有没有什么方法来提高效率呢,这篇文章就来和大家聊聊如何在Python中高效地读写大型文件,需要的可以了解下... 目录一、逐行读取大型文件二、分块读取大型文件三、使用 mmap 模块进行内存映射文件操作(适用于大文件)四、使用 pand

C# 读写ini文件操作实现

《C#读写ini文件操作实现》本文主要介绍了C#读写ini文件操作实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录一、INI文件结构二、读取INI文件中的数据在C#应用程序中,常将INI文件作为配置文件,用于存储应用程序的

C#实现文件读写到SQLite数据库

《C#实现文件读写到SQLite数据库》这篇文章主要为大家详细介绍了使用C#将文件读写到SQLite数据库的几种方法,文中的示例代码讲解详细,感兴趣的小伙伴可以参考一下... 目录1. 使用 BLOB 存储文件2. 存储文件路径3. 分块存储文件《文件读写到SQLite数据库China编程的方法》博客中,介绍了文

10. 文件的读写

10.1 文本文件 操作文件三大类: ofstream:写操作ifstream:读操作fstream:读写操作 打开方式解释ios::in为了读文件而打开文件ios::out为了写文件而打开文件,如果当前文件存在则清空当前文件在写入ios::app追加方式写文件ios::trunc如果文件存在先删除,在创建ios::ate打开文件之后令读写位置移至文件尾端ios::binary二进制方式

滚雪球学Java(87):Java事务处理:JDBC的ACID属性与实战技巧!真有两下子!

咦咦咦,各位小可爱,我是你们的好伙伴——bug菌,今天又来给大家普及Java SE啦,别躲起来啊,听我讲干货还不快点赞,赞多了我就有动力讲得更嗨啦!所以呀,养成先点赞后阅读的好习惯,别被干货淹没了哦~ 🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,助你一臂之力,带你早日登顶🚀,欢迎大家关注&&收藏!持续更新中,up!up!up!! 环境说明:Windows 10

【STM32】SPI通信-软件与硬件读写SPI

SPI通信-软件与硬件读写SPI 软件SPI一、SPI通信协议1、SPI通信2、硬件电路3、移位示意图4、SPI时序基本单元(1)开始通信和结束通信(2)模式0---用的最多(3)模式1(4)模式2(5)模式3 5、SPI时序(1)写使能(2)指定地址写(3)指定地址读 二、W25Q64模块介绍1、W25Q64简介2、硬件电路3、W25Q64框图4、Flash操作注意事项软件SPI读写W2

Mysql BLOB类型介绍

BLOB类型的字段用于存储二进制数据 在MySQL中,BLOB类型,包括:TinyBlob、Blob、MediumBlob、LongBlob,这几个类型之间的唯一区别是在存储的大小不同。 TinyBlob 最大 255 Blob 最大 65K MediumBlob 最大 16M LongBlob 最大 4G