J2EE操作Oracle的clob类型字段
2008-09-02
J2EE操作Oracle的clob类型字段
关键字: java
Oracle中,Varchar2支持的最大字节数为4KB,所以对于某些长字符串的处理,我们需要用CLOB类型的字段,CLOB字段最大支持4GB。
还有其他几种类型:
blob:二进制,如果exe,zip
clob:单字节码,比如一般的文本文件.
nlob:多字节码,如UTF格式的文件.
以下就是对CLOG字段的操作方法,在我们的项目中帮助文档部分用到。
1、首先是写入
/* 以下表PF_HELP_CONTENT中的HCONTENT字段时CLOB类型的 */
// 通过序列器生成帮助ID
Map map = Query.getMap("Select TO_CHAR(SEQ_HID.nextval) HID from DUAL ");
hid = String.valueOf(map.get("HID"));
//插入一条数据,注意CLOB字段,需要先插入一个空的clob类型 empty_clob(),然后再单独更新clob字段
sql = "Insert INTO PF_HELP_CONTENT(HID,HCONTENT) VALUES (?,empty_clob()) ";
try
{
//执行插入
rtn = DbUtils.executeUpdate(sql,hid);
/* 插入成功后,修改HCONTENT字段内容 */
//取得数据库连接
Connection conn = DbUtils.getConnection();
//手动提交
conn.setAutoCommit(false);
//定义ResultSet 和 Clob 变量
ResultSet rs = null;
oracle.sql.CLOB clob = null;
//更新SQL
String sqlclob = "Select HCONTENT from PF_HELP_CONTENT Where HID=? FOR Update ";
java.sql.PreparedStatement pstmt = conn.prepareStatement(sqlclob);
//hid是varchar2类型的,所以用setString
pstmt.setString(1,hid);
//执行update语句
rs= pstmt.executeQuery();
if(rs.next())
{
//取得刚才的HCONTENT的内容,也就是刚才添加的empty_clob()
clob = (oracle.sql.CLOB)rs.getClob(1);
}
//需要用clob.getCharacterOutputStream()流方式输出
Writer write = clob.getCharacterOutputStream();
//写入具体内容,helpform.getHContent() 存的是帮助的内容
write.write(helpform.getHContent());
write.flush();
write.close();
rs.close();
//提交
conn.commit();
conn.close();
}
catch(Exception ex)
{
//.........
}
2、修改CLOB
相关文档:
先建了张测试表
SQL> select * from test_a;
ID PLAYNAME SCORE
-------------------- --- ......
create or replace procedure prc_statistic_declare(table_name varchar2 ,table_name_pass varchar2 ,not_exist varchar2,not_exist_record varchar2)
--eg:'t_statistic_bianyuanhu_month',t_statistic_bianyuanhu_month,('YEAR','STATISTIC_ID')','YESR'
is
v_sql_column varchar2(1000);
  ......
比较专业,专门计算机技术电子书下载的:
www.itpub.net
www.itepub.net
www.netyi.net/in.asp?id=daotong
www.chmpdf.com
相对不太专业的,内容也非常丰富
www.infoxa.com
www.xpbook.com
这些网站几乎可以找到你想要的全部书籍。 ......
最近在使用Oracle做文件上传,要求将文件数据保存到数据库中。Oracle提供了Blob用来存储二进制大对象数据,可是它和Java.sql里面的Blob不兼容,经常导致Blob字段无法锁定或者操作失败。由于以前没有做过这样的例子,所以花了不少时间才解决。
我使用的是struts2.1.8+spring2.5+hibernate3.2,下面是相关代码:
spring配置 ......
1)Library Cache的命中率:
.计算公式:Library Cache Hit Ratio = sum(pinhits) / sum(pins)
SQL>SELECT SUM(pinhits)/sum(pins) from V$LIBRARYCACHE;
通常在98%以上,否则,需要要考虑加大共享池,绑定变量,修改cursor_sharing等参数。
2)计算共享池内存使用率:
SQL>SELECT ......