成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

JSP連接ORACLE數據庫時注意的一些問題

開發 后端
本文介紹JSP連接ORACLE數據庫時注意的一些問題,以及如何去處理Clob、BLOB和編碼問題。

一、如何去處理Clob、BLOB的大類型

CLOB可用于存放大文本數據,最多可存儲4GB數據,在應用開發中比較常見.java提供的sql.Clob類與之對應.它提供兩個方法來讀取Clob的數據:
◆getCharacterStream() 方法返回按unicode編碼的輸入流(java.io.Reader對象)
◆getAsciiStream() 方法返回按ASCII編碼的輸入流(java.io.InputStream對象)

所以如果你的ORACLE數據庫中有可能存儲中文字符的話,就要使用前一個方法.現在舉一個實際的例子,讓我一步步學習如何使用CLOB.首先,創建一個含CLOB字段的表:create table test (id INTEGER, content clob);

接下來, 我們通過JSP往這張表里插入一條記錄,然后再獲取顯示它.

插入操作:

以上需要注意的幾點是:

1)clob類型的數據不能直接insert,要先通過empty_clob()方法給它分配一個locator(同理,blob的用 empty_blob()函數分配locator).然后把它select出來(此時它當然沒有數據,但結果集不是空的),得到一個Clob的對象,修改該對象的內容讓它滿足我們的需要,再通過update方法更新該行記錄.

2) 通過select修改含lob類型的記錄時一定要鎖定該行(通過for update關鍵字實現),否則oracle會報錯.

3) 剛插入的記錄就select for update, 會出現"違反讀取順序"錯誤,解決辦法是將自動提交功能置為false,即不允許自動提交,然后commit它,再select,就可以了. 這就是上面那段代碼里//*兩行的作用.

下面,我們將剛插入的記錄從數據庫中讀取出來并顯示之:

二、編碼問題

因為JAVA的開發者是老外,所以他們對中文的支持并不是太好,這一點讓不少的我們感到很是頭痛,也就是我們通過說的漢字編碼問題吧,關于一些漢字編碼的規范我就不多說了,我主要是談談在和ORACLE數據庫連接時的一些小問題,不過這些小問題很是讓人頭痛的。

1、在插入到ORACLE數據庫中的中文問題要轉換成編碼

2、從數據庫中讀到中文又要轉換成編碼

讓我們看一個編碼的JAVA代碼:

  1. import java.io.UnsupportedEncodingException;  
  2. public class ECov  
  3. {  
  4. public static String asc2gb(String asc){  
  5. String ret;  
  6. if(asc==null)return asc;  
  7. try{  
  8. ret=new String(asc.getBytes("ISO8859_1"),"GB2312");  
  9. }  
  10. catch(UnsupportedEncodingException e){  
  11. ret=asc;  
  12. }  
  13. return ret;  
  14. }  
  15. public static String gb2asc(String gb){  
  16. String ret;  
  17. if(gb==null)return gb;  
  18. try{  
  19. ret=new String(gb.getBytes("GB2312"),"ISO8859_1");  
  20. }  
  21. catch(UnsupportedEncodingException e){  
  22. ret=gb;  
  23. }  
  24. return ret;  
  25. }  
  26. public static int byte2int(byte b){  
  27. return ((-1)>>>24)&b;  
  28. }  

其實這段代碼的意思也就是把兩種方法合而為一了。

在進行數據庫插入時要用ECov.gb2asc(arg),要在讀時要用ECov.asc2gb(arg)。其中最關鍵的一點就是Oracle好像只認識ISO8859_1這種格式的編碼吧(僅是我的想法)。

三、一些小細節

1.就是setAutoCommit(true or false),就是我們在sqlPlus中常用commit()的功能,如果是用true,就不要用commit(),否則還是用commit()方法的。

2.對日期類型的處理,其實他并不是想象中setDate(),getDate()那么簡單的,中間有很大的漏洞。大家自己多調試就會覺得有很多的樂趣的。

3.在和數據庫中最好是采用連接池技術,用標準的J2EE的環境,用簡單的JNDI技術,是很好的一種方法的。

【編輯推薦】

  1. JSP自定義標簽由淺到深詳細講解
  2. 在JSP環境中配置使用fckeditor詳細講解
  3. 基于JSP實現數據庫中圖片的存儲與顯示
  4. 構造JSP和Javabean開發和發布環境的方法
  5. JSP+JavaBean+Servlet工作原理實例講解
責任編輯:佚名 來源: builder
相關推薦

2010-08-03 14:20:26

2017-01-03 15:23:56

Android動態加載SO庫

2010-08-25 14:32:49

DB2數據庫遷移

2010-06-29 16:56:49

SQL Server數

2010-05-04 15:59:05

Oracle字符集

2011-07-29 15:58:53

SGAOracle

2010-08-31 14:13:48

DB2數據庫

2012-04-25 22:45:46

2016-10-18 22:10:02

HTTP推送HTML

2011-03-10 13:19:47

Oracle數據庫

2023-03-06 08:34:39

FURPS模型數據庫

2011-03-08 14:28:03

proftpdGentoo

2011-07-27 15:01:48

MySQL數據庫內存表

2011-08-01 13:59:22

Oracle數據庫命名空間

2018-06-12 15:39:41

容器部署云平臺

2009-06-12 10:25:42

Webservices

2022-01-16 08:04:44

集群部署canal

2011-07-26 09:29:15

Oracle RACASM

2010-09-17 15:41:46

網絡協議分析軟件

2012-12-19 11:40:13

思科路由器
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 一级片在线免费看 | 91精品国产乱码久久久久久久久 | 亚洲国产自产 | 欧美激情久久久 | 国产欧美日韩视频 | 一区二区三区在线 | 精品国产一区二区三区久久久蜜月 | 性高湖久久久久久久久 | 欧美综合久久 | 久久成人免费观看 | 成人免费在线观看 | 青青久视频 | 成人久久18免费网站图片 | 国产色爽 | 国产一区二区三区四区区 | 成人一区二区在线 | 亚洲国产欧美在线 | 不卡视频在线 | 黄视频国产 | 国产亚洲精品精品国产亚洲综合 | 91午夜在线 | 国产免费一区二区 | 国产亚洲精品精品国产亚洲综合 | 韩国毛片一区二区三区 | 久久久成人免费一区二区 | 中文在线a在线 | 久久久久国产一区二区三区 | 日韩成人精品一区 | 伊色综合久久之综合久久 | aaaa日韩 | 伊人久操 | 超碰人人艹 | 黄色网址免费看 | 中文字幕一区在线观看视频 | 久久久久久网 | 久久久精品日本 | 在线高清免费观看视频 | 国产乱码精品一区二区三区五月婷 | 都市激情亚洲 | 国产日韩欧美精品一区二区 | h视频在线看 |