java.sql.SQLException: 类型长度大于最大值 clob
(2012-02-27 09:53:51)
标签:
cloboracle |
分类: 数据库 |
操作Oracle类型CLOB和BLOB
Oracle中,Varchar2支持的最大字节数为4KB,所以对于某些长字符串的处理,我们需要用CLOB类型的字段,CLOB字段最大支持4GB。
还有其他几种类型:
blob:二进制,如果exe,zip
clob:单字节码,比如一般的文本文件.
nlob:多字节码,如UTF格式的文件.
以下就是对CLOG字段的操作方法,在我们的项目中帮助文档部分用到。
1、首先是写入
-
- //
通过序列器生成帮助ID -
Map
map "Select= Query.getMap( TO_CHAR(SEQ_HID.nextval) );HID FROM DUAL " -
hid
= "HID"));String.valueOf(map.get( - //插入一条数据,注意CLOB字段,需要先插入一个空的clob类型
empty_clob(),然后再单独更新clob字段 -
sql
= "InsertINTO ;PF_HELP_CONTENT(HID,HCONTENT) VALUES (?,empty_clob()) " - try
-
{
-
-
rtn = DbUtils.executeUpdate(sql,hid); -
-
-
Connection conn = DbUtils.getConnection(); -
-
conn.setAutoCommit( -
和 Clob 变量 -
ResultSet rs = -
oracle.sql.CLOB clob = -
-
String sqlclob = HCONTENT ;FROM PF_HELP_CONTENT Where HID=? FOR Update " -
java.sql.PreparedStatement pstmt = conn.prepareStatement(sqlclob); -
-
pstmt.setString( -
-
rs= pstmt.executeQuery(); -
-
{ -
-
clob = (oracle.sql.CLOB)rs.getClob( -
} -
()流方式输出 -
Writer write = clob.getCharacterOutputStream (); -
存的是帮助的内容 -
write.write(helpform.getHContent()); -
write.flush(); -
write.close(); -
rs.close(); -
-
conn.commit(); -
conn.close(); -
}
- catch(Exception
ex) -
{
-
-
}
2、修改CLOB字段内容
-
- //如果修改前的字段内容长度大于当前修改的长度时,末尾的部分内容仍然会存在
- //所以在修改内容前,需要将PF_HELP_CONTENT内容置空
-
sql
= "Update ;PF_HELP_CONTENT SET HCONTENT=empty_clob() Where HID=? " - try
-
{
-
rtn = DbUtils.executeUpdate(sql,hid); -
//以下操作跟添加时一样 -
Connection conn = DbUtils.getConnection(); -
conn.setAutoCommit( false); -
ResultSet null;rs = -
oracle.sql.CLOB null;clob = -
String "Selectsqlclob = HCONTENT ;FROM PF_HELP_CONTENT Where HID=? FOR Update " -
java.sql.PreparedStatement pstmt = conn.prepareStatement(sqlclob); -
pstmt.setString( 1,hid); -
rs= pstmt.executeQuery(); -
if(rs.next()) -
{ -
clob = (oracle.sql.CLOB)rs.getClob( -
} -
Writer write = clob.getCharacterOutputStream (); -
write.write(helpform.getHContent()); -
write.flush(); -
write.close(); -
rs.close(); -
conn.commit(); -
conn.close(); -
}
- catch(Exception
ex) -
{
-
-
}
3、取出CLOB字段的文本内容
-
-
Connection
conn = DbUtils.getConnection(); - conn.setAutoCommit(false);
-
ResultSet
rs null;= -
oracle.sql.CLOB
clob null;= -
String
sqlclob "Select= HCONTENT ;FROM PF_HELP_CONTENT Where HID=? " -
java.sql.PreparedStatement
pstmt = conn.prepareStatement(sqlclob); - pstmt.setString(1,hid);
-
rs=
pstmt.executeQuery(); - if(rs.next())
-
{
-
-
-
clob = (oracle.sql.CLOB)rs.getClob( -
}
- if(clob==null
|| 0)clob.length()== -
{
-
hcontent = - }else
-
{
-
-
hcontent=clob.getSubString(( -
}
-
rs.close();
-
conn.close();
- request.setAttribute("HCONTENT",hcontent);
-
是jdbc驱动有问题。
前一篇:sql server函数
后一篇:SQL SERVER 删除日志