定制PB与SQL Anywhere的程序发布
敬业的IT人
互联网
佚名
2008-1-4 11:57:04
用PB开发程序,并以SQL Anywhere作为后台数据库,这是PB的一种典型应用。通常情况下,要将程序发布给用户,就先要分别为这两者安装驱动,这样做既麻烦而且效果也不好——占用的空间太大,总共需要近十多二十兆。现在的我们的目标是,如何脱离PB开发环境以及SQL Anywhere数据库接口,发布自己的程序,并且身段"苗条"。经过多次测试,本人发现了一个只需3M左右的解决方案,并在Pwin98/Ewin98/PwinMe下调试通过。
一 选择必要的支持文件
1. PB主程序涉及的动态链接库(Runtime Library),以PB6.x(PB6.0、PB6.5)为例:
(1) PBVM60.DLL (PB虚拟机; 必需)
(2) PBDWE60.DLL (PB程序的DataWindow控件引擎; 可选)
(3) PBRTC60.DLL (RichText控件; 可选)
(4) PBTRA60.DLL (跟踪调用; 可选)
(5) PBODB60.DLL (ODBC接口; 可选)
在我编制的一个程序中,使用了DataWindow控件、ODBC数据接口,因此选择(1)、(2)、(5) 这三个文件;
2. SQL Anywhere 的ODBC接口,以SQL Anywhere 5.0 /5.5为例,至少要包含这些文件:
DBENG50.EXE、DBL50T.DLL、WL50ENT.DLL、WTR50T.DLL、WOD50T.DLL;以上这些是准备必要的文件,但是要使程序能够真正运行起来,还不能缺少数据接口的支持。进入讨论组讨论。 二 定制SQL Anywhere 数据接口
1. 修改文件:
修改Windows目录中的ODBC.INI文件,加入下列两行:
[Pzgl] //假设数据源名称为pzgl (下同)
Driver32=C:\pzgl\Wod50t.dll //假设程序运行路径为C:\pzgl
用PB进行以上修改,涉及到PB的内部函数和Win32API函数调用:
API: getwindowsdirectory() //得到Windows的具体路径
PB: PB中打开、写入和关闭文件的函数分别是:
fileopen()、filewrite()、fileclose()。
2. Windows注册表支持:
在"Hkey_Current_User\Software\ODBC\ODBC.INI\Pzgl\" 和"Hkey_Users\.Default\ Software\ODBC\ODBC.INI\Pzgl\" 这两个分支下分别创建以下字符串(左边引号内为键名,右边引号内为字串值):
a. "AutoStop" = "Yes"
b. "DatabaseFile" = "c:\pzgl\pzgl.db"
c. "DatabaseName" = "Pzgl"
d. "Driver" = "c:\pzgl\wod50t.dll"
e. "UID" = "dba"
f. "PWD" = "sql"
g. "Start" = "c:\pzgl\dbeng50.exe"
顺便说一下,PB对注册表的操作要涉及到一下函数:
registryget() //从注册表中取值
registryset() //创建修改键或键值
registrydelete() //删除键或分支
综上所述,通过发布必要的支持文件、并进行数据接口的准备,这个PB数据库程序就可以独立运行了。虽然上述文件规模都不小,但我们将其压缩一下,不过才3M左右。若使用CreateInstall (一个小巧的安装文件制作工具),把所需文件都一起包含进去,制作成一个单独的安装程序,这样看起来不就更专业了吗 ^_^。 (需要实例程序的朋友,可以email给我:rjc@ah163.com)进入讨论组讨论。
- 最新文章
- 怎样在pb中得到存储过程的值[01-04]
- PB6.5中OLE控件的三个缺点[01-04]
- 用PowerBuilder建造计算机图形评分专家系统[01-04]
- 循序渐进学习Power Builder 6.0(17-6)[01-04]
- 循序渐进学习Power Builder 6.0(17-5)[01-04]
- 循序渐进学习Power Builder 6.0(17-4)[01-04]
- 相关文章
- PB下动态SQL语句的应用[01-04]
- PB6 + Sql Anywhere5 应用程序如何脱离开发..[01-04]
- 在PB中动态修改SQL语句[01-04]
- 用 C++ Builder 编 Microsoft SQL ..[01-03]
- SQL的基本操作(1.数据类型)[01-03]
- SQL的基本操作(3.表的相关操作)[01-03]
