|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
再说第三点:我并没有提到服务器也要整合,然后是IDE,一个好的IDE能够200%提高开发的速度,就说图形方面:你是经过简单托拽和点击就能实现功能好那。办理|成绩|中文发信人:hht(Duke),信区:Java
标题:JDK1.2关于JDBC中文成绩的办理计划&Reyzhang
发信站:网易假造社区(MonJan1113:29:431999),转信
忙了几天,终究对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+SybaseJDBCDriver(PowerJ2.5附带)+OracleJDBCD
river(Oracle8.0.3附带).
我的第一个别会是用JDBC-ODBC桥接会见数据库中文输出有成绩,我还没办理,我用
的JDBCODBCDriver是JDK1.2自带的.
第二个别会是用JDBC间接联数据库,这时候大概有两种情形:
1,中文输出没成绩(Oracle8),便可以在SQL语句中间接写中文,如:
statement.executeUpdate("inserintotablenamevalues("测试",....)
2,中文输出有成绩(Sybase11),看毛病可知是Unicode转换引发的,办理举措是将U
nicode转换为ASCII情势,即一个汉字拆成两个char,用到两个类ByteToCharConve
rter和CharToByteConverter,在sun.io.*中,能够在JDKhomejrelibi18n.jar
中找到,没有文档,我也其实网上找到用法的.
在输出时,用ChineseStringToAscii转换为ASCII码字串,查询时用AsciiToChines
eString转换为Unicode字串.源代码以下:
publicstaticStringAsciiToChineseString(Strings){
char[]orig=s.toCharArray();
byte[]dest=newbyte[orig.length];
for(inti=0;i<orig.length;i++)
dest[i]=(byte)(orig[i]&0xFF);
try{
ByteToCharConvertertoChar=ByteToCharConverter.getConverter("g
b2312");
returnnewString(toChar.convertAll(dest));
}
catch(Exceptione){
System.out.println(e);
returns;
}
}
publicstaticStringChineseStringToAscii(Strings){
try{
CharToByteConvertertoByte=CharToByteConverter.getConverter("g
b2312");
byte[]orig=toByte.convertAll(s.toCharArray());
char[]dest=newchar[orig.length];
for(inti=0;i<orig.length;i++)
dest[i]=(char)(orig[i]&0xFF);
returnnewString(dest);
}
catch(Exceptione){
System.out.println(e);
returns;
}
}
主程序片段以下:
try{
Statementstmt;
Class.forName("com.sybase.jdbc.SybDriver");
Connectionconn=DriverManager.getConnection("jdbc:sybase:Tds:202.9
7.228.249:5000/todo","sa","");
stmt=conn.createStatement();
Strings="何海涛";
s=ChineseStringToAscii(s);
stmt.executeUpdate("insertintorussiavalues("+s+",1,1,"+s+
")");
}catch(Exceptione){
System.out.println(e);
}
在读数据时用Strings=AsciiToChineseString(rs.getString(1))
--------------------
由于手头只能对这两种数据库举行测试,以是对其余数据库大概呈现的情形不克不及保
证.不外我估量基础是下面这两种情形.别的,用JDK1.2有的公司供应的Driver也升
级了,好比Sybase本来的Driver就欠好使.道理就是如许,在实践操纵中要靠本人摸
索了.下面两个办法参考了台湾某BBS的一篇文章.
别的,yzhang不知你要的是甚么版本,你能够在jconnect软件安装的目次下找JDBC
Driver包,大概的格局是zip或jar,把他拷出来就好了.我的就是从PowerJ中拷出
来的
Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。Oracle收购Sun后Java前途未卜。 |
|