精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>编程开发>>● Java>>JAVA编程>>中文问题>>oracle,jdbc和中文的一些经验

主题:oracle,jdbc和中文的一些经验
发信人: lihai()
整理人: chenwumail(2001-03-20 10:11:25), 站内信件
我的java水平是不配谈什么经验的,只是找了老半天文档,解决了一部分问
题,所以写出来抛砖引玉.我主要是在linux上弄的. 8051 on redhat5.2
和8161 on redhat 6.2.

我碰到到的有三个层次问题.

oracle相关:
oracle数据库的NLS支持没弄清,创建数据库时的charset,
NLS_LANG的环境变量,都得设对.我习惯在创建数据库时用
ZHS16GBK,环境变量用SIMPLIFIED CHINESE_CHINA.ZHS16GBK.
其通过标志是 sqlplus输入,输出中文正常.

path相关:
        CLASSPATH一定要包括对应的oracle jdbc驱动文件.
jdk1.1.x用classes111.zip,
jdk2的1.2或1.3版用classes12.zip,这些都可以在oracle
下载.
其标志是程序编译是否通过,用oracle的demo试试.
还有在用oci接口的jdbc driver时,会有java.lib.path
的错误,no ocijdbc8 in java.library .
我通常是把libocijdbc8.so copy到 JRE_HOME/lib/i386里.
        windows上应该是 ocijdbc8.dll.

java的string类相关:
        
以下摘自前辈的文章:
取出
      String tmp = null;
       try {
         tmp = new String(rset.getString (1).getBytes("GB2312"));
       }
       catch (java.io.UnsupportedEncodingException e) {
       }
        插入
      String tmp = new String("insert into test values('测试')");
       try {
         tmp = new String(tmp.getBytes("8859_1"),"GB2312");
       }
       catch (java.io.UnsupportedEncodingException e) {
       }
      stmt.executeQuery(tmp);
到这一步你应该成功了.

不过这种方法实在太烦,各位大虾实际项目时如何解决的呢,
用继承Statement对象,再重载一些函数?

另外有谁在 linux下(glibc2.1.3,jsdk1.3,oracle8161,oracle.jdbc817)
下成功用oci方式连接数据库吗,我总是得到
java.sql.SQLException: ORA-01031: insufficient privileges.
而用thin dirver或 sqlplus都是能行的.

--
Try Linux : http://members.linuxstart.com/~lihai/
icq# 41134031

※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 203.95.7.220]

[关闭][返回]