level 5
💕一心一世💘
楼主
开发工具和技术更新 使用powerbuilder 的程序员越来越少,再加上sybase被sap收购,
估计powerscript语言在市场逐步淡化,但会加强sybase数据库的发展。
有的电脑安装有Adaptive Server Anywhere(asa) 有的电脑没有
为了实现两种情况下的odbc连接,同时又不影响正常pb开发中的数据库管理
,将连接参数封装
第一步:首先定义连接参数的结构
global type str_db_property from structure string DBMS //(必须)所使用的数据库管理系统的名字,如Sybase,Oracle,ODBC,MSS Microsoft SQL Server。
string Database //连接的数据库名 string LogID //登录到数据库服务器上的用户名,有的DBMS不需要此项,但Sybase和Oracle需要指定这个参数。
string LogPass //登录到数据库服务器上的用户口令。这个属性可设可不设,但Sybase和Oracle需要指定口令。
string ServerName //服务器名
string UserID //连接数据库所用的用户名。有的DBMS不需要此项(ms sqlserver)
string DBPass //用户连接数据库的口令。
string Lock="RC" //隔离级别 RC默认提交读 RU未提交读 RR可重复读 TS序列化 资料参考:sqlserver 事务隔离级别
boolean AutoCommit=false //
string DBParm //连接参数 //以上为连接参数,一下为结果属性 //long SQLCode //指示最近一次SQL操作失败或成功。它的取值为: 返回结果 0 无错误。 -1 出现一个错误。 100 没有检索到数据。
//long SQLDBCode //数据库错误代码,同的数据库的含义不同。
//string SQLErrText //数据库错误内容,相应于SQLDBCode属性中错误码的文字说明
//long SQLNRows //最近一次SQL操作影响的行数,数据库不同其含义也不同。
//string SQLReturnData //返回DBMS执行SQL的附加信息,不同的DBMS其值不同。 //一下为asa8.0使用属性,加载asa驱动
string Sybasedb //sybase数据库位置 *.db
string Dbeng8path //asa Dbeng8.exe
string Dbodbc8path //asa Dbodbc8.dll
string Asaname="aa_erp" //可以设置默认数据源名称
end type 在以上机构定义中,可以设置属性的默认值,也可以不设,在调用时再赋值。第二步:封装为函数,方便调用 forward prototypes
public function integer uf_db_gettrans (ref transaction l_tran, str_db_property str_property, integer types)
end prototypes public function integer uf_db_gettrans (ref transaction l_tran, str_db_property str_property, integer types);
choose case types
case 1 //ms sqlserver专用
l_tran.DBMS =str_property.DB***_tran.Database =str_property.Database
l_tran.LogPass =str_property.LogPass
l_tran.ServerName = str_property.ServerName
l_tran.LogId = str_property.LogId
l_tran.Lock = str_property.Lock
l_tran.AutoCommit = str_property.AutoCommit
l_tran.DBParm=str_property.DBParm
case 2 //asa 8.0
string ls_root
string ls_root_table
ls_root="HKEY_CURRENT_USER\software\odbc\odbc.ini"
ls_root_table=ls_root+"\"+str_property.Asaname
//判断是否有asa驱动程序
string ls_drivervalue
string ls_driverpath="HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST.INI\ODBC Drivers"
RegistryGet(ls_driverpath,"Adaptive Server Anywhere 8.0",regstring!,ls_drivervalue)
if ls_drivervalue<>"Adaptive Server Anywhere 8.0" then
RegistrySet("HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST.INI\ODBC Drivers","Adaptive Server Anywhere 8.0",RegString!,"Installed")
RegistrySet("HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\ODBC Translators","Adaptive Server Anywhere 8.0 Translator",RegString!,"Installed")
2013年01月29日 03点01分
1
估计powerscript语言在市场逐步淡化,但会加强sybase数据库的发展。
有的电脑安装有Adaptive Server Anywhere(asa) 有的电脑没有
为了实现两种情况下的odbc连接,同时又不影响正常pb开发中的数据库管理
,将连接参数封装
第一步:首先定义连接参数的结构
global type str_db_property from structure string DBMS //(必须)所使用的数据库管理系统的名字,如Sybase,Oracle,ODBC,MSS Microsoft SQL Server。
string Database //连接的数据库名 string LogID //登录到数据库服务器上的用户名,有的DBMS不需要此项,但Sybase和Oracle需要指定这个参数。
string LogPass //登录到数据库服务器上的用户口令。这个属性可设可不设,但Sybase和Oracle需要指定口令。
string ServerName //服务器名
string UserID //连接数据库所用的用户名。有的DBMS不需要此项(ms sqlserver)
string DBPass //用户连接数据库的口令。
string Lock="RC" //隔离级别 RC默认提交读 RU未提交读 RR可重复读 TS序列化 资料参考:sqlserver 事务隔离级别
boolean AutoCommit=false //
string DBParm //连接参数 //以上为连接参数,一下为结果属性 //long SQLCode //指示最近一次SQL操作失败或成功。它的取值为: 返回结果 0 无错误。 -1 出现一个错误。 100 没有检索到数据。
//long SQLDBCode //数据库错误代码,同的数据库的含义不同。
//string SQLErrText //数据库错误内容,相应于SQLDBCode属性中错误码的文字说明
//long SQLNRows //最近一次SQL操作影响的行数,数据库不同其含义也不同。
//string SQLReturnData //返回DBMS执行SQL的附加信息,不同的DBMS其值不同。 //一下为asa8.0使用属性,加载asa驱动
string Sybasedb //sybase数据库位置 *.db
string Dbeng8path //asa Dbeng8.exe
string Dbodbc8path //asa Dbodbc8.dll
string Asaname="aa_erp" //可以设置默认数据源名称
end type 在以上机构定义中,可以设置属性的默认值,也可以不设,在调用时再赋值。第二步:封装为函数,方便调用 forward prototypes
public function integer uf_db_gettrans (ref transaction l_tran, str_db_property str_property, integer types)
end prototypes public function integer uf_db_gettrans (ref transaction l_tran, str_db_property str_property, integer types);
choose case types
case 1 //ms sqlserver专用
l_tran.DBMS =str_property.DB***_tran.Database =str_property.Database
l_tran.LogPass =str_property.LogPass
l_tran.ServerName = str_property.ServerName
l_tran.LogId = str_property.LogId
l_tran.Lock = str_property.Lock
l_tran.AutoCommit = str_property.AutoCommit
l_tran.DBParm=str_property.DBParm
case 2 //asa 8.0
string ls_root
string ls_root_table
ls_root="HKEY_CURRENT_USER\software\odbc\odbc.ini"
ls_root_table=ls_root+"\"+str_property.Asaname
//判断是否有asa驱动程序
string ls_drivervalue
string ls_driverpath="HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST.INI\ODBC Drivers"
RegistryGet(ls_driverpath,"Adaptive Server Anywhere 8.0",regstring!,ls_drivervalue)
if ls_drivervalue<>"Adaptive Server Anywhere 8.0" then
RegistrySet("HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST.INI\ODBC Drivers","Adaptive Server Anywhere 8.0",RegString!,"Installed")
RegistrySet("HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\ODBC Translators","Adaptive Server Anywhere 8.0 Translator",RegString!,"Installed")