通过JDBC操纵Oracle数据库LOB字段的分析
时间:2007-12-23 来源:不详 作者:迈克DB
LOB类型分为BLOB和CLOB两种:BLOB即二进制大型对象(BinaryLargeObject),适用于存贮非文本的字节流数据(如程序、图象、影音等)。而CLOB,即字符型大型对象(CharacterLargeObject),则与字符集相关,适于存贮文本型的数据(如历史档案、大部头著作等)。
下面以程序实例说明通过JDBC操纵Oracle数据库LOB类型字段的几种情况。
先建立如下两个测试用的数据库表,PowerDesignerPD模型如下:
建表SQL语句为:
CREATETABLETEST_CLOB(IDNUMBER(3),CLOBCOLCLOB)
CREATETABLETEST_BLOB(IDNUMBER(3),BLOBCOLBLOB)
一、CLOB对象的存取
1、往数据库中插入一个新的CLOB对象
publicstaticvoidclobInsert(Stringinfile)throwsException
{
/*设定不自动提交*/
booleandefaultCommit=conn.getAutoCommit(); 内容来自dedecms
conn.setAutoCommit(false);
try{
/*插入一个空的CLOB对象*/
stmt.executeUpdate("INSERTINTOTEST_CLOBVALUES(’111’,EMPTY_CLOB())");
/*查询此CLOB对象并锁定*/
ResultSetrs=stmt.executeQuery("SELECTCLOBCOLFROMTEST_CLOBWHEREID=’111’FORUPDATE");
while(rs.next()){
/*取出此CLOB对象*/
oracle.sql.CLOBclob=(oracle.sql.CLOB)rs.getClob("CLOBCOL");
/*向CLOB对象中写入数据*/
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){
/*出错回滚*/
conn.rollback();
throwex;
}
/*恢复原提交状态*/
conn.setAutoCommit(defaultCommit);
}
2、修改CLOB对象(是在原CLOB对象基础上进行覆盖式的修改)
publicstaticvoidclobModify(Stringinfile)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.CLOB)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){
/*出错回滚*/
conn.rollback();
throwex;
}
/*恢复原提交状态*/
conn.setAutoCommit(defaultCommit);
}
本文来自织梦
上一篇:My SQL安全性指南 下一篇:创建Standby Database
文章评论
共有位Admini5网友发表了评论 查看完整内容