由于pb9.0对webservice支持不好,因此将程序升级到pb11.5下面是本人在升级过程中的一些体会,希望对大家有用:
a_transaction.DBMS = "OLE DB"
a_transaction.LogPass = "xxxxxx"
a_transaction.LogId = "sa"
a_transaction.AutoCommit = False
a_transaction.DBParm
结果出现两个严重问题,一个问题:凡是char类型的字段,从数据库检索出来后其未填充部分全部用空格代替而不是将其截短,另一个严重问题就是死锁。后改为
a_transaction.DBMS = "OLE DB"
a_transaction.LogPass = "xxxxxx"
a_transaction.LogId = "sa"
a_transaction.AutoCommit = False
a_transaction.DBParm
后经分析发现在pb9.0 blobedit函数是通过ansi编码方式进行处理的,而在pb11.5 blobedit函数是通过unicode编码方式进行处理的,而windows操作系统对这个注册键是进行unicode方式进行编码的,因此作者"小本鱼"在处理这段代码时都在每一个ansi字符后以char(0)字符进行填充,以转化为unicode字符因此我们只需要将这段代码改为
问题就解决了。同时我们在pb11.5中使用字符串函数对字符串进行处理时要注意字符串的编码方式如:mid函数在ansi方式下就要使用midA而在unicode 方式下就用mid或midw
pb11.5关于游标
pb11.5的ole db数据接口方式对游标的支持,只支持向前读取,不支持向后读取即只支持fetch ,不支持(fetch prior,fetch first)
pb11.5关于外部函数的引用
比如 Function int rf_load_key_hex(long icdev,int mode,int sec,string nkey) Library "mwrf32.dll" alias for "rf_load_key_hex;Ansi"
如果你转入或还回的是 ansi字符则后面一定要加 ANSI
初次使用,感觉pb11.5延续了pb9.0的稳定性,同时对webservice的支持出现了革命性的变化,非常值得称道
下面是本人用ole db接口方式方式,应用程序所包含的动态库:
ADVAPI32.DLL,atl71.dll,DBNETLIB.DLL,DBNMPNTW.DLL,EasySoap115.dll,ExPat115.dll,libeay32.dll,libjcc.dll,msadce.dll,msadcer.dll,msdatl3.dll,msvcp71.dll,NTWDBLIB.DLL,ODBCBCP.DLL,oledb32.dll,oledb32r.dll,pbdpl115.DLL,PBDWE115.DLL,PBOLE115.DLL,PBSHR115.DLL,PBVM115.DLL,SQLCTR80.DLL,SQLISAPI.DLL,sqloledb.dll,SQLSRV32.DLL,SQLUNIRL.DLL,ssleay32.dll,utils.dll