前提:
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自帶的驅動,而不用大的修改的問題。注:因為其他原因需要更換驅動。
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自帶的驅動,而不用大的修改的問題。注:因為其他原因需要更換驅動。