oralce的clob类型数据操作
字符串长度超过4000字符的数据存入oracle数据库里clob类型的字段里,并之后做前台查询展示
这个过程会产生的问题有:
1. 因为oracle的两个单引号之间字符长度不能超过4000,字符串长度超过4000字符后会报字符过长的错,无法直接insert或update进数据库,必须得转换成clob类型。
2.查出来的clob数据不是字符串,无法直接展示。
我在ssm框架环境下的实现是
insert或update的时候通过mybatis框架封装好的String转换clob类型的方式进行转换,再做数据库操作
mybatis是通过#{,jdbcType=..}来转换类型的,这样我们就不用重新写转换类型方法了。
在查询的时候,直接查clob类型的字段会给我返回一个oracle.sql.CLOB@ac47a5这样类型的值,有两种方法可以解决
1)在查出来字符串长度小于4000的时候可以用dbms_lob.substr(clob_column)这个oracle内置的函数进行clob转字符串操作。
2)在查出字符串长度大于4000的时候,就需要一个 clob转换string的方法了:
public String ClobToString(Clob clob) throws SQLException, IOException {
String reString = "";
Reader is = clob.getCharacterStream();
BufferedReader br = new BufferedReader(is);
String s = br.readLine();
StringBuffer sb = new StringBuffer();
while (s != null) {
sb.append(s);
s = br.readLine();
}
reString = sb.toString();
if(br!=null){
br.close();
}
if(is!=null){
is.close();
}
return reString;
}
通过上面这段代码可以直接把clob转成字符串。
我在String转clob的时候也查了网上很多的说法,有的说用java来转,转了以后在存到数据库里,看了一下,大概的意思就是说先创建一个clob对象,再把长字符串放到clob对象里进行转换,这种方法也是能实现的,就是没有那么方便,还有的说用存储过程,
DECLARE
REALLYBIGTEXTSTRING CLOB := '待插入的海量字符串';
BEGIN
INSERT INTO test_table VALUES('test', REALLYBIGTEXTSTRING, '0');
end ;
/
commit;
我试了一下没有起作用就放弃了。所以觉得最方便实现的就是由mybatis的转换。
看了一下mybatis转换类型的实现是这样说的:
mapping.typeHandler.getResult会获取查询结果值的实际类型,比如我们user表中id字段为int类型,那么它就对应Java中的Integer类型,然后通过调用statement.getInt("id")来获取其int值,其类型为Integer。metaObject.setValue方法会把获取到的Integer值设置到Java类中的对应字段。
所以最后我通过这样的流程实现clob数据的查,新增,修改或把查出来的数据再累加新的字符串再update到数据库里等等操作。
oralce的clob类型数据操作相关推荐
- hibernate clob mysql_Hibernate操作Clob类型数据
在POJO中字符串大对象可以声明成一个java.lang.String或java.sql.Clob类型. 当程序从数据库中加载Clob类型数据时,仅仅加载了一个Clob类型的数据的逻辑指针.我们需要通 ...
- java将clob类型文件写到磁盘_Java对Oracle中Clob类型数据的读取和写入
Java对Oracle中Clob数据类型是不能够直接插入的,但是可以通过流的形式对clob类型数据写入或者读取,网上代码并不算特别多,讲的 Java对Oracle中Clob数据类型是不能够直接插入的, ...
- clob在java里的类型_Java对Oracle中Clob类型数据的读取和写入(转)
Java对Oracle中Clob数据类型是不能够直接插入的,但是可以通过流的形式对clob类型数据写入或者读取,网上代码并不算特别多,讲的也不是很清楚,我对网上资料进行了整理和总结,具体看代码: 写入 ...
- mysql数据库clob类型数据_JDBC读写MySQL的BLOB和CLOB类型数据(带代码)
JDBC对LOB的读写 在JDBC中提供了java.sql.Blob和java.sql.Clob两个类分别代表BLOB和CLOB数据 •BLOB(Binary Large Object):用于存储大量 ...
- python查看dataframe数据类型_python pandas中DataFrame类型数据操作函数的方法
python数据分析工具pandas中DataFrame和Series作为主要的数据结构. 本文主要是介绍如何对DataFrame数据进行操作并结合一个实例测试操作函数. 1)查看DataFrame数 ...
- python dataframe函数_python pandas中DataFrame类型数据操作函数的方法
这篇文章主要介绍了关于python pandas中DataFrame类型数据操作函数的方法,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 python数据分析工具pandas中Data ...
- (Redis_学习一)Redis关于string类型和hash类型数据操作
Redis关于string类型和hash类型数据操作 set name xiaohongyang // get name setnx name xiaohy get name setex name 1 ...
- oracle的clob类型对应java,java对oracle9i中CLOB类型的操作
这是一个完整的使用java对oracle9i的操作,其实,使用oracle10g后,操作将非常方便,但现在由于仍在使用oracle9i,所以不得不忍受这种痛苦.现将对oracle9i中CLOB类型的操 ...
- python连接oracle数据库 插入clob类型数据
python连接oracle数据库 插入clob类型数据 连接数据库 import cx_Oracle as cx #导入模块 con = cx.connect('root', 'root123', ...
最新文章
- Facebook开源ptr:在Python环境中并行运行单元测试
- POI操作Excel常用方法总结 .
- cast函数 oracle 日期_从Oracle到PG 该做的改造工作一个都不能少!
- Android Gradle编译问题
- mysql整数索引没用到_MYSQL 索引无效和索引有效的详细介绍
- Anigram单词(51Nod-1095)
- [Unity] 无脚本导出 Texture 为 PNG
- vue.js表格赋值_vue.js input框之间赋值方法
- DateTime Calendar
- java读properties的通用类,兼容linux和windows
- 59. DNS 服务器
- dbms_java 包不存在_Oracle的sql开发之包技术实战
- 《财务共享服务》读书笔记
- 优维低代码:Pipes 管道
- WPF AirSpace 空域问题解决方案
- 基于SpringBoot的影视/短视频网站系统
- 从 B 站火到 GitHub,国人开发者又一黑科技面世!
- git 创建本地分支及远程分支并且关联分支
- MySQL——数据库基本操作(教程)
- kali burpsuit抓取不了https的包