没有合适的资源?快使用搜索试试~ 我知道了~
java存取oracle中的COLB类型数据.docx
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 64 浏览量
2021-12-18
13:00:57
上传
评论
收藏 54KB DOCX 举报
温馨提示
试读
16页
。。。
资源推荐
资源详情
资源评论
CLOB 可用于存放大文本数据,最多可存储 4GB 数据,在应用开发中比较常见.java 提
供的 sql.Clob 类与之对应.它提供两个方法来读取 Clob 的数据:
getCharacterStream() 方法返回按 unicode 编码的输入流(java.io.Reader 对象)
getAsciiStream() 方法返回按 ASCII 编码的输入流(java.io.InputStream 对象)
所以如果你的数据库中有可能存储中文字符的话,就要使用前一个方法.
现在举一个实际的例子,让我一步步学习如何使用 CLOB.
首先,创建一个含 CLOB 字段的表:
以上需要注意的几点是:
1)clob 类型的数据不能直接 insert,要先通过 empty_clob()方法给它分配一个
locator(同理,blob 的用 empty_blob()函数分配 locator).然后把它 select 出来(此时它
当然没有数据,但结果集不是空的),得到一个 Clob 的对象,修改该对象的内容让它满足我们
的需要,再通过 update 方法更新该行记录.
2) 通过 select 修改含 lob 类型的记录时一定要锁定该行(通过 for update 关键字实
现),否则 oracle会报错.
3) 刚插入的记录就 select for update, 会出现"违反读取顺序"错误,解决办法是将自
动提交功能置为 false,即不允许自动提交,然后 commit 它,再 select,就可以了. 这就是上
面那段代码里//*两行的作用.
下面,我们将刚插入的记录从数据库中读取出来并显示之:
二、编码问题
因为 JAVA 的开发者是老外,所以他们对中文的支持并不是太好,这一点让不少的我们
感到很是头痛,也就是我们通过说的汉字编码问题吧,关于一些汉字编码的规范我就不多说
了,我主要是谈谈在和 oracle数据库连接时的一些小问题,不过这些小问题很是让人头痛
的。
1、在插入到数据库中的中文问题要转换成编码
2、从数据库中读到中文又要转换成编码
让我们看一个编码的 JAVA 代码:
//ECov.java
import java.io.UnsupportedEncodingException;
public class ECov
{
public static String asc2gb(String asc){
String ret;
if(asc ==null)return asc;
try{
ret =new String(asc.getBytes("ISO8859_1"),"GB2312");
}
catch(UnsupportedEncodingException e){
ret =asc;
}
}
public static String gb2asc(String gb){
if(gb==null)return gb;
try{
ret =new String(gb.getBytes("GB2312"),"ISO8859_1");
}
catch(UnsupportedEncodingException e){
ret =gb;
}
}
public static int byte2int(byte b){
其实这段代码的意思也就是把两种方法合而为一了。
在进行数据库插入时要用 ECov.gb2asc(arg),要在读时要用 ECov.asc2gb(arg)。其
中最关键的一点就是 Oracle好像只认识 ISO8859_1 这种格式的编码吧(仅是我的想法)。
三、一些小细节
1、就是 setAutoCommit(true or false),就是我们在 sqlPlus 中常用 commit()的
功能,如果是用 true,就不要用 commit(),否则还是用 commit()方法的。
2、对日期类型的处理,其实他并不是想象中 setDate(),getDate()那么简单的,中间
3、在和数据库中最好是采用连接池技术,用标准的 J2EE 的环境,用简单的 JNDI技
共 2 页。
首页 上一页 1 2
*操作 oracle数据库的 CLOB字段,包括读和写
*作者:令少爷
* */
package com.nes.common.sql.lob;
import java.sql.*;
import java.io.*;
import oracle.jdbc.OracleResultSet;
import oracle.sql.*;
public class JClob {
String tableName = null; //表名
String primaryKey = null; //表的主键名
String primaryValue = null; //表的主键值
String fieldName = null; //表的 CLOB字段名
String clobValue = null; //表的 CLOB字段值
Connection conn = null; //与 oracle的连接
/**
*
*用于测试用
*
* */
public static void main(String[] args) {
try {
JClob jc = new JClob(getConnection(),"aa","a","aaaa","c","ccc");
jc.write();
jc.read();
}
catch (Exception e) {
System.out.println(e);
e.printStackTrace();
}
}
剩余15页未读,继续阅读
资源评论
苦茶子12138
- 粉丝: 1w+
- 资源: 6万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- Screenshot_20240430_144340_com.ss.android.ugc.live.jpg
- 回到山沟沟.mp3
- 111111111111111111
- 基于matlab实现关于语音信号声源定位DOA估计所用的一些传统算法.rar
- 基于ultralytics-yolov8, 将其检测/分类/分割/姿态等任务移植到rk3588上
- Screenshot_2024-04-30-21-47-24-26.jpg
- 基于matlab实现波束形成,包括线阵、平面阵和圆阵
- Python自动生成excel周期报告源码
- 基于matlab实现DOA 估计和自适应波束形成.rar
- 一个基于yolov8的火灾检测部署
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功