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)  編輯  收藏 所屬分類: SpringWeblogicOracle
          主站蜘蛛池模板: 手游| 科尔| 陆丰市| 东阿县| 修文县| 宜昌市| 黄石市| 柞水县| 宁波市| 田林县| 布拖县| 塘沽区| 上虞市| 怀远县| 东港市| 宝山区| 吕梁市| 松原市| 科尔| 玉树县| 甘孜| 万全县| 桂平市| 滨海县| 左云县| 平武县| 修水县| 泽州县| 桂东县| 延庆县| 湛江市| 乌兰浩特市| 随州市| 嫩江县| 石棉县| 阿拉善右旗| 莆田市| 梅州市| 得荣县| 绥德县| 定结县|