Spring、Hibernate、Struts

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            11 Posts :: 0 Stories :: 6 Comments :: 0 Trackbacks
          前提:
          Weblogic:8.1.4
          Oracle:9.0.1


          CREATE TABLE MYTABLE
          (
            ID    INTEGER                                 NOT NULL,
            NAME  CHAR(30 BYTE)                           NOT NULL
          )

          在程序中使用下述方法插入7個中文字符:
          getJdbcTemplate().execute("insert into mytable (id, name) values(1, '我的測試和結果')");

          下面分為兩種測試方法:

          方法一:
          使用Weblogic自帶的ojdbc14.jar,打印剛剛插入的結果的長度為23,這是因為驅動會認為一個中文為2個字節,這樣插入后會自動在中文后面加上30-7*2個字節。

          方法二:
          用oracle網站下載的該驅動時則打印的長度變為30。這表明此時驅動會認為一個中文為1個字節,這樣插入后會自動在中文后面加上30-7*1個字節。

          這樣就出現了一個問題,如果使用方法二取出剛插入的名稱作為新的名稱再插入一條記錄時會出錯,錯誤為插入的字符值過大。這是因為取出后一個中文在java里認為是兩個字節,這樣此時的長度為30+7,當然會出錯。

          解決方法:把char改為varchar2。

          但這樣的話就使得我要對幾乎所有的表進行修改,這是我不想要的。希望大家給我提個好的建議,該如何解決從weblogic自帶的驅動改為oracle自帶的驅動,而不用大的修改的問題。注:因為其他原因需要更換驅動。





          posted on 2005-10-20 10:51 ahgf 閱讀(910) 評論(0)  編輯  收藏 所屬分類: Spring 、WeblogicOracle
          主站蜘蛛池模板: 阳东县| 永清县| 黔西县| 延吉市| 建平县| 宁城县| 石棉县| 海晏县| 高要市| 新津县| 玉龙| 孙吴县| 临沂市| 庐江县| 敦化市| 抚远县| 高阳县| 景泰县| 榆林市| 罗江县| 辽宁省| 廊坊市| 镇巴县| 黄浦区| 达孜县| 凤山县| 龙游县| 长宁县| 台东市| 浠水县| 嘉峪关市| 寿宁县| 乌兰县| 绥棱县| 宁都县| 宿州市| 洪湖市| 田阳县| 伽师县| 东丰县| 伊春市|