用PB连接不同字符集的ORACLE方法如下:
1. 方法一:
版本:PB5,PB6,PB8,PB9,PB11
说明:通过程序动态修改WINDOW平台中注册表中的NLS_LANG。
//修改客户端字符集为ZHS16GBK string ls_nls_lang ls_nls_lang = "SIMPLIFIED CHINESE_CHINA. ZHS16GBK" RegistrySet( "HKEY_LOCAL_MACHINE\Software\ORACLE","NLS_LANG",regstring!,ls_nls_lang) //进行数据库连接 Connect using sqlca; //重新修改客户端字符集为US7ASCII ls_nls_lang = "AMERICAN_AMERICA.US7ASCII" RegistrySet( "HKEY_LOCAL_MACHINE\Software\ORACLE","NLS_LANG",regstring!,ls_nls_lang) |
缺点:不太稳定
2. 方法二
版本:PB5,PB6,PB8,PB9,PB11
说明:通过程序动态修改WINDOW平台中的环境变量的NLS_LANG。
//在global external function中增加以下外部API函数 FUNCTION ulong SetEnvironmentVariable(ref string lpName,ref string lpValue) LIBRARY "kernel32.dll" ALIAS FOR "SetEnvironmentVariableA" |
//修改WINDOW平台中环境变量NLS_LANG为ZHS16GBK SetEnvironmentVariableA ("NLS_LANG", "SIMPLIFIED CHINESE_CHINA. ZHS16GBK") //进行数据库连接 Connect using sqlca; //修改回WINDOW平台中环境变量NLS_LANG为US7ASCII SetEnvironmentVariableA ("NLS_LANG", "AMERICAN_AMERICA.US7ASCII") |
缺点:不太稳定
3. 方法三
版本:PB9
说明:通过JDBC连接数据库时默认是采用ZHS16GBK的字符集。
1. 复制C:\Program Files\Sybase\Shared\PowerBuilder\jdk14目录到程序的运行目录下。 2. 复制pbjdc90.dll到程序运行目录下(pb调用JDBC的DLL,通常在PB安装目录下在的SHARE目录下) 3. 复制ojdbc14.jar到程序运行目录下(ORACLE的JDBC驱动,通常在ORACLE安装目录的JDBC目录下) 4. 增加客户机的系统环境变量classpath=c:\xxxxx\pbjdc90.dll;c:\xxxx\ojdbc14.jar |
//通过JDBC连接数据库 SQLCA.DBMS = "JDBC" SQLCA.LogPass = <******> SQLCA.LogId = "zyclinic" SQLCA.AutoCommit = False SQLCA.DBParm = "Driver='oracle.jdbc.driver.OracleDriver',URL='jdbc:oracle:thin:@192.168.17.86:1521:oracle'" CONNECT USING SQLCA; |
4. 方法四
版本:PB11
说明:连接时,通过设置DBParm参数中的字符集参数进行连接。
//连接US7ASCII SQLCA.DBMS = "O10 Oracle10g (10.1.0)" SQLCA.ServerName = "database" SQLCA.LogId = "zyclinic" SQLCA.LogPass = “123456” SQLCA.AutoCommit = False //使用本地的NLS_LANG中的字符集进行连接。如本地的NLS_LANG= AMERICAN_AMERICA.US7ASCII,则使用该字符集连接。 SQLCA.DBParm = "NLS_Charset='Local'" Connect using SQLCA; |
//连接ZHS16GBK,如本地的NLS_LANG= AMERICAN_AMERICA.US7ASCII,该连接方式仍然采用ZHS16GBK进行数据库连接。 SQLCA.DBMS = "O10 Oracle10g (10.1.0)" SQLCA.ServerName = "database" SQLCA.LogId = "zyclinic" SQLCA.LogPass = “123456 SQLCA.AutoCommit = False SQLCA.DBParm = "" Connect using SQLCA; |
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论