专业编程教程与实战项目分享平台

网站首页 > 技术文章 正文

Oracle数据库的大字段问题处理方案

ins518 2024-10-28 16:31:41 技术文章 19 ℃ 0 评论

》什么是大字段?

以oracel为例,默认varchar2类型是不能超过4000的,如果储存超过4000的类型,我们则成为“大字段”,大字段是统称,而非数据库语言。


》如何解决大字段

【尝试】

如果类型超过4000的数据插入会自动转为long型数据插入,所以我将表中需要超过4000内容的字段更改为long型,但是oracle一个表中最多只能有一个long型字段,所以这种尝试是走不通的。

【解决方案】

oracle推荐用Clob和Blob字段类型存储,CLOB(Character Large Object) 字符大对象,Blob(Binary Large Object)二进制大对象。全是文字形式的预处理sql,所以选择了clob,如果在遇到文件、视频、音频等可以选择blob。

实例:

数据封装,简单写个类似bean

Class User

Clob sqla;

Clob sqlb;

以及对应的set get方法。

我们在遍历查询结果集ResultSet的时候将对应的结果user.setClob(rs.getClob(“sqla”));

因为我们要用clob里面的内容信息,将Clob转为String使用。

在user对象能存储进sqla这个clob对象,

简单测试一下System.out.println(user.getSqla().toString());

这我们都知道,这打印出来是对象地址。

查询了下怎么将clob转String,我在用的时候将clob转为String使用呗,就查了一下写工具类,方便使用的时候调用。

public static String clobToString(CLOB clob) throws SQLException, IOException {

result clob != null ? clob.getSubString(1, (int) clob.length()): null;

}

当jdbc返回给我user对象后我在使用的地方调用clobToString(user.getSqls()),抛出的异常是:连接数据库才能操作。

写了一个stringToClob(String string) 方法返回Clob对象,关键代码如下:

new javax.sql.rowset.serial.SerialClob(s.toCharArray());这就是将字符串变为char数组利用jdbcApi转换。
在使用的地方调用同样报出需要连接数据库才能操作。
所以经研究发现,在jdbc外面String与clob互转是会出错的。
整文的核心:将转换代码在jdbc 操纵是使用。


【其他解决方案,后续更新,敬请关注。】

说明:部分内容网络引用,侵权删除。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表