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

相关文章

MySQL主从复制与读写分离的用法解读

《MySQL主从复制与读写分离的用法解读》:本文主要介绍MySQL主从复制与读写分离的用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、主从复制mysql主从复制原理实验案例二、读写分离实验案例安装并配置mycat 软件设置mycat读写分离验证mycat读

Redis分片集群、数据读写规则问题小结

《Redis分片集群、数据读写规则问题小结》本文介绍了Redis分片集群的原理,通过数据分片和哈希槽机制解决单机内存限制与写瓶颈问题,实现分布式存储和高并发处理,但存在通信开销大、维护复杂及对事务支持... 目录一、分片集群解android决的问题二、分片集群图解 分片集群特征如何解决的上述问题?(与哨兵模

ShardingSphere之读写分离方式

《ShardingSphere之读写分离方式》:本文主要介绍ShardingSphere之读写分离方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录ShardingSphere-读写分离读写分离mysql主从集群创建 user 表主节点执行见表语句项目代码读写分

关于Mybatis和JDBC的使用及区别

《关于Mybatis和JDBC的使用及区别》:本文主要介绍关于Mybatis和JDBC的使用及区别,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、JDBC1.1、流程1.2、优缺点2、MyBATis2.1、执行流程2.2、使用2.3、实现方式1、XML配置文件

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编程的方法》博客中,介绍了文