欢迎来到天天文库
浏览记录
ID:59332596
大小:19.44 KB
页数:8页
时间:2020-09-04
《解决LOB(blob与clob)的问题.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、通过JDBC操纵Oracle数据库LOB字段的分析在Oracle中,LOB(LargeObject,大型对象)类型的字段现在用得越来越多了。因为这种类型的字段,容量大(最多能容纳4GB的数据),且一个表中可以有多个这种类型的字段,很灵活,适用于数据量非常大的业务领域(如图象、档案等)。而LONG、LONGRAW等类型的字段,虽然存储容量也不小(可达2GB),但由于一个表中只能有一个这样类型的字段的限制,现在已很少使用了。LOB类型分为BLOB和CLOB两种:BLOB即二进制大型对象(BinaryLargeObject),适用于存贮非文本的字节
2、流数据(如程序、图象、影音等)。而CLOB,即字符型大型对象(CharacterLargeObject),则与字符集相关,适于存贮文本型的数据(如历史档案、大部头著作等)。下面以程序实例说明通过JDBC操纵Oracle数据库LOB类型字段的几种情况。先建立如下两个测试用的数据库表,PowerDesignerPD模型如下:建表SQL语句为:CREATETABLETEST_CLOB(IDNUMBER(3),CLOBCOLCLOB)CREATETABLETEST_BLOB(IDNUMBER(3),BLOBCOLBLOB)一、CLOB对象的存取1、往
3、数据库中插入一个新的CLOB对象publicstaticvoidclobInsert(Stringinfile)throwsException{/*设定不自动提交*/booleandefaultCommit=conn.getAutoCommit();conn.setAutoCommit(false);try{/*插入一个空的CLOB对象*/stmt.executeUpdate("INSERTINTOTEST_CLOBVALUES(’111’,EMPTY_CLOB())");/*查询此CLOB对象并锁定*/ResultSetrs=stmt.ex
4、ecuteQuery("SELECTCLOBCOLFROMTEST_CLOBWHEREID=’111’FORUPDATE");while(rs.next()){/*取出此CLOB对象*/oracle.sql.CLOBclob=(oracle.sql.CLOB)rs.getClob("CLOBCOL");/*向CLOB对象中写入数据*/BufferedWriterout=newBufferedWriter(clob.getCharacterOutputStream());BufferedReaderin=newBufferedReader(ne
5、wFileReader(infile));intc;while((c=in.read())!=-1){out.write(c);}in.close();out.close();}/*正式提交*/conn.commit();}catch(Exceptionex){/*出错回滚*/conn.rollback();throwex;}/*恢复原提交状态*/conn.setAutoCommit(defaultCommit);}2、修改CLOB对象(是在原CLOB对象基础上进行覆盖式的修改)publicstaticvoidclobModify(Strin
6、ginfile)throwsException{/* 设定不自动提交*/booleandefaultCommit=conn.getAutoCommit();conn.setAutoCommit(false);try{/*查询CLOB对象并锁定*/ResultSetrs=stmt.executeQuery("SELECTCLOBCOLFROMTEST_CLOBWHEREID=’111’FORUPDATE");while(rs.next()){/*获取此CLOB对象*/oracle.sql.CLOBclob=(oracle.sql.CL
7、OB)rs.getClob("CLOBCOL");/*进行覆盖式修改*/BufferedWriterout=newBufferedWriter(clob.getCharacterOutputStream());BufferedReaderin=newBufferedReader(newFileReader(infile));intc;while((c=in.read())!=-1){out.write(c);}in.close();out.close();}/*正式提交*/conn.commit();}catch(Exceptionex){/
8、*出错回滚*/conn.rollback();throwex;}/*恢复原提交状态*/conn.setAutoCommit(defaultCommit);}3、替换
此文档下载收益归作者所有