资源描述
第16章 课前准备内容
//使用代码配置ODBC数据源(以Adaptive Server Anywhere 9.0为例)
/*
了解注册表相关信息
HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\ODBC DRIVERS存放已经注册的ODBC数据源驱动程序
HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST.INI下可对已经注册的ODBC数据源驱动程序进行设置
HKEY_LOCAL_MACHINE\Software\ODBC\ODBC.INI\ODBC Data Sources下存放数据源名称及其驱动程序类型
HKEY_LOCAL_MACHINE\Software\odbc\odbc.ini下存放已经注册的ODBC数据源的具体细节
KYEY_LOCAL_MACHINE\Software\Microsoft\windows\CurrentVersion\App Paths下存放应用程序安装到用户计算机上后在注册表中注册的应用程序名
HKEY_LOCAL_MACHINE\Software\Microsoft\windows NT\CurrentVersion下存放当前计算机中windows安装的相应信息(包括安装路径等)
*/
问题:如何找到相应的数据库驱动程序
这些文件可以在注册表的HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST.INI下相应键中找到。如asa9.0为dbeng9.EXE、dbodbc9.dll。
必备函数:
RegistryGet( Key,Valuename,Valuetype,Value)
功能:在PowerBuilder程序中读取注册表中的信息。
RegistrySet( Key,Valuename,Valuetype,Value)
功能:在PowerBuilder程序中设置注册表中的信息。
Key表示主键; Valuename表示键值名; Valuetype表示键值类型;Value表示键值。
//一、设置程序所需要的变量
Ulong ul_num
Int answer,answer1,answer2,answer3,answer4,answer5,ansapp
String ls_driver,ls_start,ls_location,app_path,db_path,odbcstr
//二、判断windows安装路径下是否有Adaptive Server Anywhere 9.0的驱动程序
//步骤1:
//取windows xp或windows 2000安装目录,并保存到ls_location变量
answer=ReGIStryGet("HKEY_LOCAL_MACHINE\Software\Microsoft\windows NT\CurrentVersion","SystemRoot",RegString!,ls_location)
IF answer = -1 THEN
Messagebox('错误','应用程序无法获取windows的安装目录,系统将终止运行!',Stopsign!)
RETURN
END IF
//步骤2:
//判断Adaptive Server Anywhere 9.0的驱动程序是否正确安装
ls_driver=ls_location+'\dbodbc9.dll'
ls_start=ls_location+'\dbeng9.EXE'
IF NOT (FileExists(ls_driver) AND FileExists(ls_start)) THEN
Messagebox('错误','系统中没有安装Adaptive Server Anywhere 9.0的驱动程序,系统将终止运行!',StopSign!)
RETURN
else
messagebox("信息"," Adaptive Server Anywhere 9.0驱动程序已经安装!")
END IF
//三、在ODBC中注册Adaptive Server Anywhere 9.0驱动程序
//步骤1:
//设置ODBC\ODBCINST.INI\ODBC DRIVERS
answer=ReGIStrySet('HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\ODBC DRIVERS','Adaptive Server Anywhere 9.0',RegString!,'Installed')
IF answer = -1 THEN
Messagebox('错误','应用程序无法设置ODBC DRIVERS,系统将终止运行!',StopSign!)
RETURN
END IF
//步骤2:
//设置ODBC\ODBCINST.INI\
answer1=ReGIStrySet('HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST.INI\Adaptive Server Anywhere 9.0','Driver',RegString!,ls_driver)
answer2=ReGIStrySet('HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST.INI\Adaptive Server Anywhere 9.0','Setup',RegString!,ls_driver)
IF answer1 = -1 OR answer2 = -1 THEN
Messagebox('错误','应用程序无法设置ODBCINST.INI,系统将终止运行!',StopSign!)
RETURN
END IF
//四、在注册表中设置ODBC数据源
//步骤1:
//设置ODBC DATA SOURCE名称(anysql为数据源名)
answer=ReGIStrySet('HKEY_LOCAL_MACHINE\Software\ODBC\ODBC.INI\ODBC Data Sources','anysql',RegString!,'Adaptive Server Anywhere 9.0')
IF answer = -1 THEN
Messagebox('错误','应用程序无法设置ODBC DATA SOURCE名称,系统将终止运行!',StopSign!)
RETURN
END IF
//步骤2:
//获取应用程序的安装路径(ybinput为应用程序安装到用户计算机上后在注册表中注册的应用程序名,yibiao.db为应用程序的数据库名,与应用程序在同一目录下,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+'yibiao.db'
END IF
/*备注
如果当前计算机已经安装了Adaptive Server Anywhere 9.0驱动程序可以跳过步骤1和步骤2,直接使用以下三条语句
db_path='c:\pbtest1\database.db'
ls_driver='c:\pbtet1'+'\dbodbc9.dll'
ls_start='c:\pbtest1'+'\dbeng9.EXE'
*/
//步骤3:
//设置ODBC.INI的细节
answer1 = ReGIStrySet('HKEY_LOCAL_MACHINE\Software\odbc\odbc.ini\anysql','driver',RegString!,ls_driver)
answer2 = ReGIStrySet('HKEY_LOCAL_MACHINE\Software\odbc\odbc.ini\anysql','start',RegString!,ls_start)
answer3 = ReGIStrySet('HKEY_LOCAL_MACHINE\Software\odbc\odbc.ini\anysql','autostop',RegString!,'yes')
answer4 = ReGIStrySet('HKEY_LOCAL_MACHINE\Software\odbc\odbc.ini\anysql','DatabaseFile',RegString!,db_path)
answer5 = ReGIStrySet('HKEY_LOCAL_MACHINE\Software\odbc\odbc.ini\anysql','DatabaseName',RegString!,'yibiao')
IF answer1 = -1 OR answer2 = -1 OR answer3 = -1 OR answer4 = -1 OR answer5 = -1 THEN
Messagebox('错误','应用程序无法设置ODBC.INI细节,系统将终止运行!',StopSign!)
RETURN
END IF
备注:在这个步骤3中也可以在HKEY_CURRENT_USER\Software\odbc\odbc.ini\anysql下设置
START项有许多参数,“-C 8M”设置初始高速缓存大小8M,一般建议64M。“-Q”安静模式 。‘-D’禁用异步 I/O [Windows NT 、NetWare]。‘-M’对于所有数据库,在每个检查点之后截断事务日志。
//五、使用前面在注册表中注册的ODBC数据源连接数据库
odbcstr = 'dsn=anysql'
sqlca.dbms = 'odbc'
SQLCA.AutoCommit = False
sqlca.dbparm = "connectstring='"+odbcstr+";uid=dba;pwd=sql'"
connect using sqlca;
open(w_main)
第 6 页 共 6 页
//编译执行文件
图一 新建应用程序工程
图二 填写执行文件所需的信息
l 图二中信息的填写
在图二中最顶端的两行分别填写执行文件名,执行文件所需的资源列表文件名。
Project build options栏中注意要选择full build表示全部编译
Code generation option栏中选择生成机器代码
Version栏中填写版权信息
Library栏中选中所有pbl库文件的dll复选框,如果需要的话可在其后填入相应得资源列表文件名
l 编译执行文件所需的resource file name解释
在最后生成时产生的pbr文件可以把程序用到的 bmp,jpg,ico 等等资源文件编译到 DLL,EXE 文件,使用的资源会自动包含!! 创建了.pbr资源文件以后就可以不再需要那些.bmp,.ico文件了
如果不生成,要把引用资源文件放到当前目录下,使用相对路径。
制作pbr文件可以在pb中创建,工具栏上面有个Edit按钮,点击之后进入了文件编辑界面,输入你要保存的内容,一行只能输入一个图片文件的路径名(要和在pb中用到的路径相同),然后保存时选择pbr文件类型即可。用记事本也可以编辑pbr文件
展开阅读全文