J2EE²Ù×÷OracleµÄclobÀàÐÍ×Ö¶Î
2008-09-02
J2EE²Ù×÷OracleµÄclobÀàÐÍ×Ö¶Î
¹Ø¼ü×Ö: java
OracleÖУ¬Varchar2Ö§³ÖµÄ×î´ó×Ö½ÚÊýΪ4KB£¬ËùÒÔ¶ÔÓÚijЩ³¤×Ö·û´®µÄ´¦Àí£¬ÎÒÃÇÐèÒªÓÃCLOBÀàÐ͵Ä×ֶΣ¬CLOB×Ö¶Î×î´óÖ§³Ö4GB¡£
»¹ÓÐÆäËû¼¸ÖÖÀàÐÍ£º
blob:¶þ½øÖÆ,Èç¹ûexe,zip
clob:µ¥×Ö½ÚÂë,±ÈÈçÒ»°ãµÄÎı¾Îļþ.
nlob:¶à×Ö½ÚÂë,ÈçUTF¸ñʽµÄÎļþ.
ÒÔϾÍÊǶÔCLOG×ֶεIJÙ×÷·½·¨£¬ÔÚÎÒÃǵÄÏîÄ¿ÖаïÖúÎĵµ²¿·ÖÓõ½¡£
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
Ïà¹ØÎĵµ£º
¿ªÊ¼ÔÚmyeclipse6.5ÖÐDB BROWERн¨ÁËÒ»¸öÊý¾Ý¿âÁ¬½Ó£¬Èçͼ£º
Ò»Á¬½Ó£¬±¨³öÁËÁ½¸ö´íÎó£º
1. ORA-00604 error occurred at recursive SQL level string.
2.ORA-12705: invalid or unknown NLS parameter value.
²é×ÊÁϺó½â¾ö£¨ÆÚ¼äÎÒ»¹¸Ä¹ýtestÓû§µÄÁ¬½ÓȨÏÞ£©£º
½«MyEclipseÖÐeclipseĿ¼ÏµÄeclipse.iniÎļþ£¬° ......
ÔÚÕâÀïÎÒÃǽ«½éÉÜOracleÊý¾Ý¿âÓÅ»¯·½°¸Óëʵ¼ù£¬²»Í¬µÄ»·¾³»áÓв»Í¬µÄµ÷ÊÔ£¬µ«ÊÇÒ²»áÓвî±ð£¬Ï£Íû´ó¼ÒÄܺÏÀíµÄÎüÊÕ¡£ Ò»¡¢Ç°ÑÔ ¶þ¡¢ORACLEÊý¾Ý¿âÓÅ»¯¸ÅÊö 1¡¢ÄÚ´æµÈ²ÎÊýÅäÖõÄÓÅ»¯ 2¡¢¼õÉÙÎïÀí¶ÁдµÄÓÅ»¯ 3¡¢ÅúÁ¿Öظ´²Ù×÷µÄSQLÓï¾ä¼°´ó±í²Ù×÷µÄÓÅ»¯ ¶þ¡¢ORACLEÊý¾Ý¿âÓÅ»¯·½°¸ 1¡¢ÄÚ´æµÈOracleϵͳ²ÎÊýÅäÖà 2¡¢Ê ......
Õª×ÔÐìÓñ½ðµÄ<<sqlÐÔÄܵĵ÷Õû-×ܽá>>
ÈçºÎʹÓÃhints:
HintsÖ»Ó¦ÓÃÔÚËüÃÇËùÔÚsqlÓï¾ä¿é(statement block£¬ÓÉselect¡¢update¡¢delete¹Ø¼ü×Ö±êʶ)ÉÏ£¬¶ÔÆäËüSQLÓï¾ä»òÓï¾äµÄÆäËü²¿·ÖûÓÐÓ°Ïì¡£È磺¶ÔÓÚʹÓÃunion²Ù×÷µÄ2¸ösqlÓï¾ä£¬Èç¹ûÖ»ÔÚÒ»¸ösqlÓï¾äÉÏÓÐhints£¬Ôò¸Ãhints²»»áÓ°ÏìÁíÒ»¸ösqlÓï¾ä¡£
ÎÒÃÇ¿ÉÒÔÊ ......
OracleÖÐKill sessionµÄÑо¿
×÷Õߣºeygle |English Version ¡¾×ªÔØÊ±ÇëÒÔ³¬Á´½ÓÐÎʽ±êÃ÷ÎÄÕ³ö´¦ºÍ×÷ÕßÐÅÏ¢¼°±¾ÉùÃ÷¡¿
Á´½Ó£ºhttp://www.eygle.com/archives/2004/06/kill_session.html
ÎÒÃÇÖªµÀ,ÔÚOracleÊý¾Ý¿âÖÐ,¿ÉÒÔͨ¹ýkill sessionµÄ·½Ê½À´ÖÕÖ¹Ò»¸ö½ø³Ì,Æä»ù±¾Óï·¨½á¹¹Îª:
alter system kill session 'sid,serial# ......
×î½üÔÚʹÓÃOracle×öÎļþÉÏ´«£¬ÒªÇó½«ÎļþÊý¾Ý±£´æµ½Êý¾Ý¿âÖС£OracleÌṩÁËBlobÓÃÀ´´æ´¢¶þ½øÖÆ´ó¶ÔÏóÊý¾Ý£¬¿ÉÊÇËüºÍJava.sqlÀïÃæµÄBlob²»¼æÈÝ£¬¾³£µ¼ÖÂBlob×Ö¶ÎÎÞ·¨Ëø¶¨»òÕß²Ù×÷ʧ°Ü¡£ÓÉÓÚÒÔǰûÓÐ×ö¹ýÕâÑùµÄÀý×Ó£¬ËùÒÔ»¨Á˲»ÉÙʱ¼ä²Å½â¾ö¡£
ÎÒʹÓõÄÊÇstruts2.1.8+spring2.5+hibernate3.2£¬ÏÂÃæÊÇÏà¹Ø´úÂ룺
springÅäÖÃ ......