六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

JDK1.2對于JDBC中文問題的處理方案

[摘要]發信人: hht (Duke), 信區: Java 標題: JDK1.2關于JDBC中文問題的解決方案&Re yzhang 發信站: 網易虛擬社區 (Mon Jan 11 13:29:43 ...
發信人: hht (Duke), 信區: Java
標題: JDK1.2關于JDBC中文問題的解決方案&Re yzhang
發信站: 網易虛擬社區 (Mon Jan 11 13:29:43 1999), 轉信

忙了幾天,終于對JDK1.2的JDBC中文問題有了初步的了解,雖然還有問題存在,但我
想大家可能都著急了吧?:)所以就把我的初步想法先貼出來,歡迎大家補充.
JDK1.2的中文問題主要是由于引入了Unicode引起的(其實在1.1版本中就有了),U
nicode的字符由16bit構成,關于Unicode更詳細的信息有興趣者可以到www.unico
de.org查閱,在1.0版本中,一個中文是由兩個char(8bit)組成的,而1.1以上版本中
是由一個char(16bit)組成的.這一點大家可以用System.out.println(s.length(
))語句來證實,其中s為中文字串.
現在來說說解決辦法,首先聲明這些結果只是在我的環境里測試通過,如果在各位
的環境里有問題,請務必告知.
我的環境是JDK1.2+Win95+Sybase JDBC Driver(PowerJ2.5附帶)+Oracle JDBC D
river(Oracle8.0.3附帶).
我的第一個體會是用JDBC-ODBC橋接訪問數據庫中文輸入有問題,我還沒解決,我用
的JDBCODBC Driver是JDK1.2自帶的.
第二個體會是用JDBC直接聯數據庫,這時可能有兩種情況:
1,中文輸入沒問題(Oracle8),即可以在SQL語句中直接寫中文,如:
statement.executeUpdate("inser into tablename values("測試",....)
2,中文輸入有問題(Sybase11),看錯誤可知是Unicode轉換引起的,解決辦法是將U
nicode轉換為ASCII形式,即一個漢字拆成兩個char,用到兩個類ByteToCharConve
rter和CharToByteConverter,在sun.io.*中,可以在JDK home\jre\lib\i18n.jar
中找到,沒有文檔,我也實在網上找到用法的.
在輸入時,用ChineseStringToAscii轉換為ASCII碼字串,查詢時用AsciiToChines
eString轉換為Unicode字串.源代碼如下:
public static String AsciiToChineseString(String s) {
char[] orig = s.toCharArray();
byte[] dest = new byte[orig.length];
for (int i=0;i<orig.length;i++)
dest[i] = (byte)(orig[i]&0xFF);
try {
ByteToCharConverter toChar = ByteToCharConverter.getConverter("g
b2312");
return new String(toChar.convertAll(dest));
}
catch (Exception e) {
System.out.println(e);
return s;
}
}

public static String ChineseStringToAscii(String s) {
try {
CharToByteConverter toByte = CharToByteConverter.getConverter("g
b2312");
byte[] orig = toByte.convertAll(s.toCharArray());
char[] dest = new char[orig.length];
for (int i=0;i<orig.length;i++)
dest[i] = (char)(orig[i] & 0xFF);
return new String(dest);
}
catch (Exception e) {
System.out.println(e);
return s;
}
}
主程序片斷如下:
try{
Statement stmt;
Class.forName("com.sybase.jdbc.SybDriver");
Connection conn =DriverManager.getConnection ("jdbc:sybase:Tds:202.9
7.228.249:5000/todo","sa",""); 
stmt = conn.createStatement ();
String s="何海濤";
s=ChineseStringToAscii(s);
 stmt.executeUpdate ("insert into russia values('"+s+"',1,1,'"+s+
"')");
}catch(Exception e){
System.out.println(e);
}
在讀數據時用String s=AsciiToChineseString(rs.getString(1))
--------------------
因為手頭只能對這兩種數據庫進行測試,所以對別的數據庫可能出現的情況不能保
證.不過我估計基本是上面這兩種情況.另外,用JDK1.2有的公司提供的Driver也升
級了,比如Sybase原來的Driver就不好使.原理就是這樣,在實際操作中要靠自己摸
索了.上面兩個方法參考了臺灣某BBS的一篇文章.
另外,yzhang不知你要的是什么版本,你可以在jconnect軟件安裝的目錄下找JDBC
Driver包,可能的格式是zip或jar,把他拷出來就行了.我的就是從PowerJ中拷出
來的




主站蜘蛛池模板: 亚洲第一黄网站 | 人妖在线精品一区二区三区 | 亚洲第三区 | 又大又硬又爽免费视频 | 亚洲精品中文字幕乱码影院 | 日韩有码第一页 | 午夜欧美成人久久久久久 | 欧美一级特黄特色大片 | 日本在线视频免费观看 | 亚洲视频播放 | 天美传媒麻豆自制剧 | 日韩美女视频在线 | 青青久久精品国产 | 五月婷婷俺也去开心 | 亚洲欧美日本视频 | 一二三四在线观看免费高清观看 | 亚洲国产成人精彩精品 | 手机看片日韩日韩韩 | 中文字幕伦伦在线中文字 | 最近更新在线中文字幕一页 | 五月情网 | 一本到视频在线观看 | 欧美视频色 | 中文字幕欧美日韩 | 亚洲高清资源在线观看 | 视频一区二区三区欧美日韩 | 色噜噜狠狠色综合日日 | 日韩a级黄色片 | 欧美一区二区三区不卡免费 | 在线视频观看亚洲 | 人人天天夜夜 | 在线观看国产一区亚洲bd | 日韩黄色在线播放 | 亚洲久草 | 色噜噜狠狠色综合网图区 | 我色综合 | 日韩精品一区二区三区乱码 | 午夜免费视频网站 | 日韩欧美亚洲综合一区二区 | 日韩版码免费福利视频 | 亚洲一区综合在线播放 |