中怎样实现用代码配置牛

激光设备2021年09月06日

一、 引言

Powerbuilder是客户端的开发工具,在实际应用中必须与数据库管理系统配合起来才能运行应用程序,它与数据库的连接可以通过ODBC接口实现。在ODBC中配置好数据源后,便可在程序代码中连接数据库并对数据库进行各种操作了。

怎样才能在代码中实现对ODBC的配置呢?其实,Windows中所有的ODBC数据源在系统注册表中都有记载,因此只要对注册表中的项目进行相应的修改即可。与ODBC相关的键中,HKEY_LOCAL_MACHINE\\Software\\ODBC\\I\\ODBCDRIVER中记录了所有已安装的ODBC驱动程序;HKEY_LOCAL_MACHINE\\Software\\ODBC\\I中记录了各种ODBC驱动程序的相关信息;HKEY_CURRENT_USER\\Software\\ODBC\\I\\ODBC Data Sources记录了各种数据源的类型;HKEY_CURRENT_USER\\Software\\ODBC\\I则记录了各种数据源的详细信息。因此,只要在代码中对这些键进行配置,便可达到手工配置ODBC的目的。

二、在代码中配置ODBC的实现

下面以Powerbuilder内置的Sybase SQL Anywhere5.0数据库为例介绍ODBC的代码配置方法。

1、 找出数据库驱动程序及相关文件

首先找到相应的数据库驱动程序,这些文件可以在注册表的HKEY_LOCAL_MACHINE\\Software\\ODBC\\I下相应键中找到。如Sybase SQL Anywhere5.0为E,L,以及一些其他相关的动态链接库,此例中为l,l,l,d,l。这些文件必须与最终的可执行程序一起安装到用户的计算机上,可以与应用程序放在一起,也可以放在一个特定的目录下(本例为Windows的system目录下)。在调试时可先将这些文件复制到指定的目录下。

2、 在程序中用代码配置ODBC

在应用的open事件中对ODBC配置的代码如下:

Ulong ul_num

Int answer,answer1,answer2,answer3,answer4,answer5,ansapp

String ls_driver,ls_start,ls_location,apppath,db_path,odbcstr

//获取操作系统的system目录,并保存到ls_location变量

answer=RegistryGet(“KYEY_LOCAL_MACHINE\\Software\\Microsoft\\Windows\\CurrentVersion\\Setup”,”SysDir”,RegString!ls_location)

IF answer=-1 THEN

Messagebox(‘错误’,’应用程序无法获取Windows的系统目录,系统统将终止运行!’,Stopsign!)

RETURN

END IF

//判断Sybase SQL Anywhere5.0的驱动程序是否正确安装

ls_driver=ls_location+’\\L’

ls_start=ls_location+’\\E’

IF NOT (FileExists(ls_driver) AND FileExists(ls_start)) THEN

Messagebox(‘错误’,’系统中没有安装SQL Anywhere的驱动程序,系统将终止运行!’,StopSign!)

RETURN

END IF

//设置ODBC\\I\\ODBC DRIVERS

answer=RegistrySet(‘ HKEY_LOCAL_MACHINE\\Software\\ODBC\\I\\ODBCDRIVER’,’Sybase SQL Anywhere 5.0’,RegString!,’Installed’)

IF answer=-1 THEN

Messagebox(‘错误’,’应用程序无法设置ODBC DRIVERS,系统将终止运行!’,StopSign!)

RETURN

END IF

//设置ODBC\\I\\

answer1=RegistrySet(‘ HKEY_LOCAL_MACHINE\\Software\\ODBC\\I\\Sybase SQL Anywhere 5.0’,’CPTimeout’,RegString!,’not pooled’)

answer2=RegistrySet(‘ HKEY_LOCAL_MACHINE\\Software\\ODBC\\I\\Sybase SQL Anywhere 5.0’,’Driver’,RegString!,ls_driver)

answer3=RegistrySet(‘ HKEY_LOCAL_MACHINE\\Software\\ODBC\\I\\Sybase SQL Anywhere 5.0’,’Setup’,RegString!,ls_driver)

IF answer1=-1 OR answer2=-1 OR answer3=-1 THEN

Messagebox(‘错误’,’应用程序无法设置I,系统将终止运行!’,StopSign!)

RETURN

END IF

//设置ODBC DATA SOURCE名称(anysql为数据源名)

answer=RegistrySet(‘ HKEY_LOCAL_MACHINE\\Software\\ODBC\\I\\ODBC Data Sources’,’anysql’,RegString!,’Sybase SQL Anywhere 5.0’)

IF answer=-1 THEN

这意味着每月有近一百万人感染诺罗病毒。 Messagebox(‘错误’,’应用程序无法设置ODBC DATA SOURCE名称,系统将终止运行!’,StopSign!)

RETURN

END IF

//获取应用程序的安装路径(ybinput为应用程序安装到用户计算机上后在注册表中注册的应用程序名,为应用程序的数据库名,与应用程序在同一目录下,anysql为数据源名)

ansapp=RegistryGet(“KYEY_LOCAL_MACHINE\\Software\\Microsoft\\Windows\\CurrentVersion\\App Paths\\ybinput”,”Path”,RegString!app_path)

IF ansapp=-1 THEN

Messagebox(‘错误’,’应用程序无法获取安装路径名,系统将终止运行!’,StopSign!)

RETURN

ELSE

db_path=app_path+’’

END IF

//设置I的细节

answer1=RegistrySet(‘HKEY_current_user\\software\\odbc\\i\\anysql’,’driver’,RegString!,ls_driver)

answer2=RegistrySet(‘HKEY_current_user\\software\\odbc\\i\\anysql’,’start’,RegString!,ls_start)

answer3=RegistrySet(‘HKEY_current_user\\software\\odbc\\i\\anysql’,’autostop’,RegString!,’yes’)

answer4=RegistrySet(‘HKEY_current_user\\software\\odbc\\i\\anysql’,’DataBaseFile’,RegString!,db_path)

answer5=RegistrySet(‘HKEY_current_user\\software\\odbc\\i\\anysql’,’DataBaseName’,RegString!,’yibiao’)

IF answer1=-1 OR answer2=-1 OR answer3=-1 OR answer4=-1 OR answer5=-1 THEN

Messagebox(‘错误’,’应用程序无法设置I细节,系统将终止运行!’,StopSign!)

RETURN

END IF

odbcstr=’dsn=anysql;databasename=yibiao;databasefile=’+db_path

ms=’odbc’

tabse=’yibiao’

parm=”connectstring=’”+odbcstr+”;uid=dba;pwd=sql’”

connect using sqlca;

open(w_main)

该程序在Powerbuilder6.0下运行通过。

查看本文来源

成都排名好的不孕不育医院
乌鲁木齐医院妇科哪家医院好
积食消化不良怎么办
相关阅读
BBC:现有名称涉地域歧视 世卫组织起来准备重新命名猴痘

BBC:现有名说是涉地域种族主义 埃博拉组织起来准备重新命名猫痘 我国三代...

2023-10-07
疫情中的特殊618,“承压”的诸州写下反思

作者:崔鹏志 可能:IT时报 武汉SARS封控之年前过后有约两个月初,618娱乐场...

2023-09-20
"零售之王"换帅尘埃落定!27年"老招行"王良接棒,保持战略监督不偏移、不动摇

“超市之君”换帅尘埃落定! 美联社谎说是,5同年19日下午,招商证券召开...

2023-09-14
宾夕法尼亚州校园枪击案频发孩童无助 华人这样跟小孩谈枪

中的新网7年初6日电 据澳大利亚《世界日报》华尔街日报,居住在澳大利亚加...

2023-09-11
黄家有女初长成!黄磊俩女儿近照曝光,姐妹俩擦染发化妆好时髦

6年初22日晚,刘若英爱妻孙莉久违在个人互动游戏平台交友了一段二母亲多妹...

2023-09-10
客货车难下高速?最新要求:足量发证!核酸结果互认!

4月底18日,全中国助护物流补给品供应倡导传统产业风险管理比较正位定电视...

2023-09-08
友情链接