HuangPeng
===========================================================
Data Provider和Global Convert Codeset
===========================================================
对于Higen Miao今天早上发的邮件Global Convert Codeset说明的情况,我在今天的EWP项目测试的时候发现了一个问题:
        并不是每次读取数据库都需要在SQL语句里面加上XXBG_CONVERT_CODESET_FUN(栏位名,'ZHS','O')来进行转换。据我现在测试的结果,如果我们用的数据驱动是微软提供的,必须用XXBG_CONVERT_CODESET_FUN来转换,反之,如果用Oracle公司提供的数据驱动,就能自动进行解码,不需要再加上这个函数。
   
      提供给大家分享,如果有疑义之处,希望提出来大家讨论,谢谢!
 
以下是我测试的例子:
《一》在SQL Navigator里面的测试
          select
            SHIP_TO_CITY AS TEST,
            XXBG_CONVERT_CODESET_FUN(SHIP_TO_CITY,'ZHS','O') AS SHIP_TO_CITY
        from  XXC0OM_SHIP_HEADER_V where ORDER_NUMBER='1003000024'
        这条SQL语句,如果我们在SQL Navigator中执行,Test栏位的中文是utf-8编码,出现的是乱码,SHIP_TO_CITY出现的就是正常的简体中文字符。
《二》在VB里面的测试
    <1>用Oracle的数据驱动
        (安装Oracle 9i Client之后添加两个引用Oracle Inproc Server 4.0 Type Library和Oracle Object for OLE Code Wizard for Stored procedures 1.0):
            Dim rsSys As New ADODB.Recordset
            Set rsSys = GetRecordSet("select SHIP_TO_CITY AS TEST,XXBG_CONVERT_CODESET_FUN(SHIP_TO_CITY,'ZHS','O') AS SHIP_TO_CITY from    XXC0OM_SHIP_HEADER_V where ORDER_NUMBER='1003000024'")
           Trim(rsSys .Fields("TEST"))得到的是汉字 苏州
          Trim(rsSys .Fields("SHIP_TO_CITY"))得到的却是'??'
 
    Public Function GetRecordSet(strSql As String) As ADODB.Recordset
        Dim OracleConn As ADODB.Connection
        Dim oraCommand As ADODB.Command
        Dim OraSession  As OracleInProcServer.OraSessionClass
        Dim oradatabase As OracleInProcServer.oradatabase
        Dim OraDynaset As OracleInProcServer.OraDynaset
        Dim strErrorDescription As String
 
        Set OraSession = New OracleInProcServer.OraSessionClass
        Set oradatabase = OraSession.OpenDatabase(strServer, strUserName & "/" & strPwd, CInt(0))
        Set OracleConn = New ADODB.Connection
        Set oraCommand = New ADODB.Command
        OracleConn.CursorLocation = 3
        OracleConn.ConnectionString = "Provider=OraOLEDB.Oracle.1;Password=APPS;PLSQLRSet=1;Persist Security Info=True;User ID=APPS;Data Source=DEV2"
        OracleConn.Open
        oraCommand.ActiveConnection = OracleConn
        oraCommand.CommandType = &H1
        oraCommand.CommandText = strSql
    
        Set GetRecordSet = oraCommand.Execute()
    
        Set OracleConn = Nothing
        Set oraCommand = Nothing
End Function
    <2>用microSoft的数据驱动
            Dim strCon As String
            strCon = "Provider=MSDAORA.1;User ID=apps;Data Source=dev2;Persist Security Info=False;Password=apps"
 
            Adodc1.ConnectionString = strCon
            Adodc1.RecordSource = "select SHIP_TO_CITY AS TEST,XXBG_CONVERT_CODESET_FUN(SHIP_TO_CITY,'ZHS','O') AS SHIP_TO_CITY from  XXC0OM_SHIP_HEADER_V where ORDER_NUMBER='1003000024'"
            Adodc1.Refresh
    
            Adodc1.Recordset.Fields("test")得到的是汉字 苏州 的UTF-8编码"鑻忓窞"
            Adodc1.Recordset.Fields("SHIP_TO_CITY")得到的是汉字 苏州
    《三》在ASP里面的测试
        <1>用Oracle的数据驱动
            dim conn 
            set conn=server.createobject("ADODB.connection") 
            conn.open "Provider=OraOLEDB.Oracle.1;Persist Security Info=True;User ID=APPS;Password=APPS;Data Source=DEV2"
 
            set rs=server.createobject("adodb.recordset") 
            strSql="select SHIP_TO_CITY AS TEST,XXBG_CONVERT_CODESET_FUN(SHIP_TO_CITY,'ZHS','O') AS SHIP_TO_CITY "
            strSql=strSql+ "from  XXC0OM_SHIP_HEADER_V where ORDER_NUMBER='1003000024'"
            set rs=conn.execute(strSql)
            response.write rs("test")&"<br>"输出的是汉字 苏州
            response.write rs("SHIP_TO_CITY")输出的是 ??
        <2>用microSoft的数据驱动
              dim conn 
            set conn=server.createobject("ADODB.connection") 
            conn.open "Provider=MSDAORA.1;User ID=apps;Data Source=dev2;Persist Security Info=False;Password=apps"
 
            set rs=server.createobject("adodb.recordset") 
            strSql="select SHIP_TO_CITY AS TEST,XXBG_CONVERT_CODESET_FUN(SHIP_TO_CITY,'ZHS','O') AS SHIP_TO_CITY "
            strSql=strSql+ "from  XXC0OM_SHIP_HEADER_V where ORDER_NUMBER='1003000024'"
            set rs=conn.execute(strSql)
            response.write rs("test")&"<br>"输出的是 鑻忓窞
            response.write rs("SHIP_TO_CITY")输出的是 苏州
    《四》在ASP.NET里面的测试
        <1>用microSoft的数据驱动
            string strConn="Provider=MSDAORA; Data Source=DEV2; User ID=apps;Password=apps;Connection Reset=FALSE;Max Pool Size=75; Min Pool Size=5";
            string strQuery="select SHIP_TO_CITY AS TEST,XXBG_CONVERT_CODESET_FUN(SHIP_TO_CITY,'ZHS','O') AS SHIP_TO_CITY from  XXC0OM_SHIP_HEADER_V where     ORDER_NUMBER='1003000024'";
            OleDbConnection conn=new OleDbConnection(strConn);
            conn.Open();
            OleDbCommand OraComm=new OleDbCommand();
            OraComm.CommandType=CommandType.Text;
            OraComm.Connection=conn;
            OraComm.CommandText=strQuery;
            OleDbDataReader OracleReader=OraComm.ExecuteReader();
            OracleReader.Read();
            string strDate=OracleReader["SHIP_TO_CITY"].ToString().Trim();得到的是 苏州
            string strTest=OracleReader["TEST"].ToString().Trim();得到的是 鑻忓窞

            OracleReader.Close();
            conn.Close();
        <2>用Oracle的数据驱动(没有成功)
            OleDbConnection oraConn=new OleDbConnection();
            oraConn.ConnectionString="Provider=OraOLEDB.Oracle.1;Data Source=DEV2;User Id=APPS;Password=APPS";
            string strQuery="select SHIP_TO_CITY AS TEST,XXBG_CONVERT_CODESET_FUN(SHIP_TO_CITY,'ZHS','O') AS SHIP_TO_CITY from  XXC0OM_SHIP_HEADER_V where     ORDER_NUMBER='1003000024'";
            oraConn.Open();执行到这里就出现错误,错误信息是"未在本地计算机上注册“OraOLEDB.Oracle.1”提供程序。"
    
            OleDbCommand OraComm=new OleDbCommand();
            OraComm.CommandType=CommandType.Text;
            OraComm.Connection=oraConn;
            OraComm.CommandText=strQuery;
            OleDbDataReader OracleReader=OraComm.ExecuteReader();
            OracleReader.Read();
         string strDate=OracleReader["SHIP_TO_CITY"].ToString().Trim();
          string strTest=OracleReader["TEST"].ToString().Trim();
          OracleReader.Close();
          oraConn.Close();
    <3>用MicroSoft的数据驱动OracleClient(没有成功)
            string strConn="Data Source=DEV2;User Id=APPS;Password=APPS;";
            string strQuery="select XXBG_CONVERT_CODESET_FUN(ITEM_DESC,'ZHS','O') AS ITEM_DESC from XXC0IN_EINV_TRX_LINE";
            OracleConnection OCConn=new OracleConnection(strConn);
            OCConn.Open();执行到这里就出现错误,错误信息是"无法在 DLL oci.dll 中找到名为 OCIEnvCreate 的入口点。"
            OracleCommand OraComm=new OracleCommand();
            OraComm.CommandType=CommandType.Text;
            OraComm.Connection=OCConn;
            OraComm.CommandText=strQuery;
            OracleDataReader OracleReader=OraComm.ExecuteReader();
            OracleReader.Read();
            string strDate=OracleReader["SHIP_TO_CITY"].ToString().Trim();
          string strTest=OracleReader["TEST"].ToString().Trim();

            OracleReader.Close();
            OCConn.Close();

hphubei 发表于:2004.12.30 21:12 ::分类: ( Oracle开发技巧 ) ::阅读:(90426次) :: 评论 (61)
re: Data Provider和Global Convert Codeset [回复]

“执行到这里就出现错误,错误信息是"无法在 DLL oci.dll 中找到名为 OCIEnvCreate 的入口点”的出错原因是啥知道不?最后解决没?

Allen Li 评论于: 2006.08.17 13:48
re: Data Provider和Global Convert Codeset [回复]

Dominic 评论于: 2007.11.23 07:47
re: Data Provider和Global Convert Codeset [回复]

Dominic 评论于: 2007.11.23 07:47
re: Data Provider和Global Convert Codeset [回复]


[URL=][/URL]

Aron 评论于: 2007.11.23 09:24
re: Data Provider和Global Convert Codeset [回复]


[URL=][/URL]

Halo 评论于: 2007.11.23 10:58
re: Data Provider和Global Convert Codeset [回复]

July 评论于: 2007.11.23 14:17
re: Data Provider和Global Convert Codeset [回复]


[URL=][/URL]

Hero 评论于: 2007.11.23 17:39
re: Data Provider和Global Convert Codeset [回复]

Jane 评论于: 2007.11.23 19:26
re: Data Provider和Global Convert Codeset [回复]

Hero 评论于: 2007.11.23 21:08
re: Data Provider和Global Convert Codeset [回复]


[URL=][/URL]

July 评论于: 2007.11.23 22:58
re: Data Provider和Global Convert Codeset [回复]


[URL=][/URL]

Hero 评论于: 2007.11.24 00:53
re: Data Provider和Global Convert Codeset [回复]

Heel 评论于: 2007.11.24 04:49
re: Data Provider和Global Convert Codeset [回复]


[URL=][/URL]

Still 评论于: 2007.11.24 06:44
re: Data Provider和Global Convert Codeset [回复]


[URL=][/URL]

Joe 评论于: 2007.11.24 08:32
re: Data Provider和Global Convert Codeset [回复]

Diesel 评论于: 2007.11.24 10:14
re: Data Provider和Global Convert Codeset [回复]

Diesel 评论于: 2007.11.24 10:15
re: Data Provider和Global Convert Codeset [回复]

Joe 评论于: 2007.11.24 12:01
re: Data Provider和Global Convert Codeset [回复]


[URL=][/URL]

Jane 评论于: 2007.11.24 13:53
re: Data Provider和Global Convert Codeset [回复]


[URL=][/URL]

Heel 评论于: 2007.11.24 15:44
re: Data Provider和Global Convert Codeset [回复]

Dominic 评论于: 2007.11.24 17:34
re: Data Provider和Global Convert Codeset [回复]

Aron 评论于: 2007.11.24 19:25
re: Data Provider和Global Convert Codeset [回复]


[URL=][/URL]

Hero 评论于: 2007.11.24 21:21
re: Data Provider和Global Convert Codeset [回复]


[URL=][/URL]

Hero 评论于: 2007.11.24 21:21
re: Data Provider和Global Convert Codeset [回复]


[URL=][/URL]

Hero 评论于: 2007.11.24 23:14
re: Data Provider和Global Convert Codeset [回复]

Aron 评论于: 2007.11.25 01:07
re: Data Provider和Global Convert Codeset [回复]


[URL=][/URL]

Aron 评论于: 2007.11.25 05:40
re: Data Provider和Global Convert Codeset [回复]


[URL=][/URL]

Heel 评论于: 2007.11.25 08:14
re: Data Provider和Global Convert Codeset [回复]

Joe 评论于: 2007.11.25 19:37
re: Data Provider和Global Convert Codeset [回复]

Joe 评论于: 2007.11.25 19:37
re: Data Provider和Global Convert Codeset [回复]

Joe 评论于: 2007.11.25 21:45
re: Data Provider和Global Convert Codeset [回复]


[URL=][/URL]

Dominic 评论于: 2007.11.26 00:06
re: Data Provider和Global Convert Codeset [回复]


[URL=][/URL]

Heel 评论于: 2007.11.26 02:33
re: Data Provider和Global Convert Codeset [回复]


[URL=][/URL]

Heel 评论于: 2007.11.26 02:34
re: Data Provider和Global Convert Codeset [回复]

Arnie 评论于: 2007.11.26 05:06
re: Data Provider和Global Convert Codeset [回复]

Arnie 评论于: 2007.11.26 05:06
re: Data Provider和Global Convert Codeset [回复]

Arnie 评论于: 2007.11.26 05:06
re: Data Provider和Global Convert Codeset [回复]

Halo 评论于: 2007.11.26 07:35
re: Data Provider和Global Convert Codeset [回复]

Halo 评论于: 2007.11.26 07:36
re: Data Provider和Global Convert Codeset [回复]


[URL=][/URL]

Neo 评论于: 2007.11.26 09:51
re: Data Provider和Global Convert Codeset [回复]


[URL=][/URL]

Aron 评论于: 2007.11.26 12:20
re: Data Provider和Global Convert Codeset [回复]

Neo 评论于: 2007.11.26 14:47
re: Data Provider和Global Convert Codeset [回复]

Hero 评论于: 2007.11.26 17:16
re: Data Provider和Global Convert Codeset [回复]

Bill 评论于: 2007.11.27 00:05
re: Data Provider和Global Convert Codeset [回复]

Heel 评论于: 2007.11.28 19:59
re: Data Provider和Global Convert Codeset [回复]

Neo 评论于: 2007.11.28 22:18
re: Data Provider和Global Convert Codeset [回复]


[URL=][/URL]

Hero 评论于: 2007.11.29 00:22
re: Data Provider和Global Convert Codeset [回复]


[URL=][/URL]

Diesel 评论于: 2007.11.29 02:32
re: Data Provider和Global Convert Codeset [回复]


[URL=][/URL]

Diesel 评论于: 2007.11.29 02:32
re: Data Provider和Global Convert Codeset [回复]

Dominic 评论于: 2007.11.29 04:45
re: Data Provider和Global Convert Codeset [回复]


[URL=][/URL]

Aron 评论于: 2007.11.29 11:21
re: Data Provider和Global Convert Codeset [回复]

Dominic 评论于: 2007.11.29 13:28
re: Data Provider和Global Convert Codeset [回复]

Neo 评论于: 2007.11.29 15:28
re: Data Provider和Global Convert Codeset [回复]


[URL=][/URL]

Aron 评论于: 2007.11.29 17:34
re: Data Provider和Global Convert Codeset [回复]


[URL=][/URL]

Halo 评论于: 2007.11.29 19:41
re: Data Provider和Global Convert Codeset [回复]

Dominic 评论于: 2007.11.29 21:38
re: Data Provider和Global Convert Codeset [回复]

请教一下,你所说的“(安装Oracle 9i Client之后添加两个引用Oracle Inproc Server 4.0 Type Library和Oracle Object for OLE Code Wizard for Stored procedures 1.0):”
这个是怎么实现的,client端好像没有Oracle Inproc Server 4.0 Type Library?如何引用
我在oracle 8i里面这样用
Set OraSession = CreateObject("OracleInProcServer.XOraSession")
Set OraDatabase = OraSession.OpenDatabase(service, user & "/" & Password, 0&)

结果在9i client端不能使用activx can't creat object。请教如何解决?十分感谢

albert 评论于: 2008.04.30 10:36
Test, just a test [回复]

Hello. And Bye.

XRumerTest 评论于: 2008.10.04 22:12
If You want to delete your site from my base [回复]

to: Admin - If You want to delete your site from my spam list, please sent url of your domain to my e-mail: stop.spam.today@gmail.com
And I will remove your site from my base within 24 hours
webmastegz

Pedyordek 评论于: 2008.11.17 10:59
couldn't agree more [回复]

dude you know what I'm talking about! soy desole

beinuounk 评论于: 2008.11.21 12:28
free videos amateur allure [回复]

free new milf porn videos free download indian sex movie free sex movies lickin free streaming latina amateur free quicktime sex movie thumbs amateur sex free xxx amateur movie gallery free thumbnail amateurs free topless amateur pics amateur solo handjob free sex movie 1 free sex video demo free japanese anime porn movies free sex videos clear clips free hustler porn videos

Hopaycloggicy 评论于: 2009.11.28 00:05
Thats where the Vikings used to hide in the Middle Ages. [回复]

Hes no danger to anyone. I dont know how . She said only, Francisco, why? Oh, dont use gutter language! I cannot issue any public statements about it. The expediency of the moment, I wouldnt think youd find them hard to deduce. because I thought of them as mine.

Snacuunty 评论于: 2010.02.27 20:11

发表评论
标题

在此添加评论
表情符号: smile laughing tongue angry crying sad wassat wink

称呼

邮箱地址(可选)

个人主页(可选)




自我介绍
切换风格
新闻聚合
博客日历
文章归档...
最新发表...
博客统计...
Blog信息
网站链接...