龙源期刊网 http://www.qikan.com.cn
浅谈PB与数据库的连接
作者:王先桃 杨志平
来源:《教师·中》2011年第02期
摘 要:一个信息系统的各个部分能否紧密地结合在一起以及如何结合,关键在于数据库。为了增强由PowerBuilder搭建的信息系统平台的性,让该平台在任意计算机内都能正常运行,需要通过代码来实现数据库的动态连接。 关键词:PowerBuilder;数据库;SQL Server 2000
由PowerBuilder(简称PB)应用程序构成的信息系统是提供信息、辅助人们对环境进行控制和决策的系统,其核心和基础是数据。[1]一个信息系统的各个部分是而分离的,它们能否紧密地结合在一起以及如何结合,关键就在于数据库。因此在用PB搭建信息系统平台时,就需要与数据库建立连接。
下面将详细讲述PB与SQL Server 2000中的sjk数据库连接的方法及过程。 一、准备阶段
在PB与SQL Server 2000数据库之间建立连接之前需要做如下准备: (1)安装和配置PowerBuilder和SQL Server 2000。
(2)在SQL Server 2000中创建所需要连接的数据库(这里我们创建的数据库名为sjk),并在数据库中建立所需的表格。将数据库内容生成sql脚本并保存起来,这里我们保存为shujuku.sql文件存储在F盘。 二、创建数据库配置文件
数据库配置文件(Database Profile)是一组保存在PowerBuilder开发环境初始化文件(定义与特定数据库的连接)中的命名参数集合,在连接每个数据库前必须创建相应的数据库配置文件。[2]
创建数据库配置文件的基本步骤如下:
(1)在PowerBuilder工具栏上选中DB Profile按钮,出现Database Profiles对话框,其中列出了已经安装的数据库接口。
(2)单击接口名,这里我们选择MSS MS SQL Server 6.x 让其高亮显示。
龙源期刊网 http://www.qikan.com.cn
(3)单击New按钮,出现Database Profile setup 对话框。 (4)选择Connection选项,填写相关信息,单击Ok按钮。
到这一步,我们就已经将PB与SQL Server 2000中的sjk数据库建立了连接,在搭建信息系统平台时就可以使用该数据库中的表和数据了。 三、与数据库建立动态连接
信息系统搭建完成之后,还只能在该计算机内运行。如果要将程序拷贝到其他计算机内,就会出现无法连接数据库运行不了的情况。这样的信息系统无法于数据库,缺少移植性。所以上面的方法只适合在一台计算机内搭建信息系统平台时使用,如果需要在多台计算机内运行或修改该信息系统程序,就需要与sjk数据库建立动态连接。
在SQL Server 2000中提供了四个系统数据库以及两个当范例用的数据库。其中master数据库记录了SQL Server系统中的所有其他数据库的存在状态以及包含用户数据库初始化信息的主要文件位置。[3]
所以我们可以先与master数据库相连,通过master数据库来检索是否存在我们要连接的数据库名。如果不存在就需要创建该数据库,接着我们运行在准备阶段生成的sql脚本(即shujuku.sql文件),从而动态地建立了数据库中的各个表与表内的数据,然后再与创建的数据库进行连接。这样我们就完成了与数据库的动态连接了。具体步骤如下:
创建事务性变量
从以上分析过程可知我们需要与两个数据库进行连接,所以除了默认的SQLCA外,我们还需要创建一个事物性变量dsqlca。代码为: dsqlca=create transaction
与master数据库进行连接
在应用程序中访问数据库时,必须指定所需的连接参数作为事务对象的属性,通常在打开应用对象的脚本中设置这些参数。代码如下: dsqlca.DBMS = \"MSS Microsoft SQL Server 6.x\" dsqlca.Database = \"master\" dsqlca.LogPass = \"sa\" //口令
dsqlca.ServerName = \"(local)\" //数据库服务器名
龙源期刊网 http://www.qikan.com.cn
dsqlca.LogId = \"sa\" //用户名 dsqlca.AutoCommit = true dsqlca.DBParm = \"\"
检测master数据库是否连接成功
在与数据库进行连接之后,就要检测master数据库是否连接成功。如果没有连接成功就要做出提示,以便检查出错原因。代码如下: jiance:
connect using dsqlca; if dsqlca.sqldbcode0 then
if messagebox(\"系统提示!\系统服务器未连接,继续连接吗?\ then
disconnect using dsqlca; else
disconnect using dsqlca; goto jiance; end if end if
检索数据库是否存在
检索数据库是否存在,如不存在则创建数据库。这里我们以“sjk”为数据库名。代码如下:
龙源期刊网 http://www.qikan.com.cn
dbo.sysdatabases where name='sjk’ using dsqlca; commit using dsqlca;
xs11=’CREATE DATABASE ’+’sjk’+’ on (NAME= ’+’sjk’+’,filename=\"’+’F:\sjk’+’.mdf\\sjk’+’_log.ldf\ execute immediate :xs11 using dsqlca;
运行sql脚本,创建数据库中的表格
当SQL Server 2000的登录模式为Windows模式时代码为:
run('isqlw -S ’+’(local)’+’ -d ’+’sjk’+’ -E -i ’+’F:\shujuku.sql -o mn.sql’,Minimized!) 当SQL Server 2000的登录模式为混合模式时代码为:
run(’isqlw -S ’+’(local)’+’ -d ’+’sjk’+’ -U ’+’sa’+’ -P ’+’sa’+’ -i ’+’F:\shujuku.sql -o mn.sql’,Minimized!)
连接sjk数据库
现在我们就可以连接sjk数据库运行和修改程序。连接sjk数据库的方法与连接master数据库的方法基本相同,只需要把事务性变量dsqlca改为默认的SQLCA,同时把数据库名改为“sjk”即可。
检测sjk数据库是否连接成功
检测sjk数据库是否连接成功的方法与第三步相同。 四、小结
当搭建好了的信息系统平台打包之后,只要计算机内安装了PowerBuilder和SQL Server 2000,就可以将打包文件拷贝过来进行运行,在运行时系统将会自动创建并连接数据库,而不需要手动建立和连接数据库,从而增加了程序的性和可移植性。
龙源期刊网 http://www.qikan.com.cn
参考文献:
[1][2] 徐武平.Power Builder 7 程序设计导学[M].北京:清华大学出版社,2002:94,
[3] 隆华软件工作室.SQL Server 2000程序设计[M].北京:清华大学出版社,2001: