登录注册
上海交通大学论坛 > 数据库 > 浏览当前帖子 手机版 关闭左侧栏
Power Builder应用ODBC访问不同数据库
返回本版】  【发表帖子】  【回复帖子 浏览量  8999      回帖数 0
英雄泪2008    等级  

楼主 发表于  2012/5/26 18:50:02    编 辑   


 
  对于管理信息系统和数据库应用系统的开发,人们往往根据实际需 
求采用不同的数据库系统。应用这些系统,各单位各部门投入了大量 
的人力、物力,相继完成了一些管理系统。现在,当人们希望提高整个 
管理水平,建立全集团、全公司的企业级信息管理系统时发现,以往已 
完成的各部门系统采用的是不同的DBMS,要想统一起来,非常困难,甚 
至是不可能的。因此,为了保护过去的投资,利用已建立的信息系统, 
迫切需要一种能访问多种数据库的操作平台,以便建立更大、更完备 
、更全面的企业信息管理系统。 
    为了适应这种需求,Microsoft推出了开放数据库互连技术,简称O 
DBC。开放数据库互连接实际上是一个数据库访问库,它包含访问不同 
数据库所要求的ODBC驱动程序。如要操作Fo xpro数据库,要用Foxpro 
的ODBC驱动程序;要访问DBASE,要用DBASE的ODBC驱动程序。总之,应 
用程序要操作不同类型的数据库,只要调用ODBC所支持的函数,动态链 
接到不同的驱动程序上即可。随着ODBC技术的推出,许多开发工具软 
件都把ODBC技术集成到自己的软件中,如,Visu al basic、Visual C+ 
+、Power Builder等等。其中,由PowerSoft公司开发的PowerBuilder 
 是迄今为止最成功的数据库应用系统开发工具,它利用ODBC技术不仅 
适应各种数据库系统,而且采用面向对象的开发方法和可视化的编程 
环境,使PowerBuilder成为优秀的前端开发工具,日益受到人们的重视 
。 
    本文将主要讨论在Power Builder中,以不同的方法,应用ODBC技 
术,去访问不同的数据库。 
    在实际应用中,可能会以几种不同的方式访问数据库:只访问一个 
数据库、在多个数据库间动态切换、同时需要访问多个数据库。这些 
方式,都可以应用ODBC技术满足用户的要求。下面分别讨论每种方式 
应用ODBC具体方法。假定所需要的ODBC驱动程序已经正确安装。 
    一、只访问单一数据库 
    这是一种比较简单的ODBC应用。应用程序只需要访问单一的数据 
库,采用Power Builde r的画笔,就可以完成相应的ODBC设置。下面以 
Foxpro为例,说明这一过程 
    1.配置ODBC 
    .单击Power Panel上的ODBC画笔,出现ODBC设置窗口。 
    .在in stalled driver窗口选中Foxpro Files。 
    .单击Create按钮,出现ODBC Foxpro Setup窗口,在Data source 
 Name栏,定义数据源名,如:C-foxpro。 
    .选择Foxpro 2.5。 
    .选择Foxpro表所在的目录及索引文件。 
    .以上参数定义完后,单击OK。返回Configure ODBC窗口。 
    .在数据源框中,可看到刚刚定义的C-Foxpro出现,选中它。 
    .单击Done按钮。此时,ODBC驱动程序及数据源定义完成。 
    2.连接数据源 
    .单击DB PROFILE画笔,出现Database Profile窗口。 
    .如果设有与FOxpro相关的PROFILE,单击NEW,建立一个。建立PR 
OFILE后,返回Databas e Pro-file窗口。选中新定义的PROFILE;如果 
有,则选择该PROFILE。 
    .单击OK,则建立了与指定数据库的ODBC连接。 
    此后,在设计Power Builder的应用程序时,所有对数据库的操作 
都连接到Foxpro。在此要特别说明的是,虽然只访问一种类型的数据 
库,但是对于同一个数据库,可以建立多个数据源。Power Builder规 
定,每个ODBC数据源必须有一个唯一的名字,可以使用不同的连接参数 

,使多个数据源连接到同一个数据库。比如,两个数据源使用不同的PA 
SSWORD和USERID,都连接到Foxpro。 

    二、在多个数据库间动态切换 
    在设计企业级的信息管理系统时,常常会遇到需要访问不同数据 
库系统的问题。比如人事部门的人事档案是应用Foxpro数据库系统, 
财务部门的财务信息是应用DBASE数据库系统, 因此,企业信息管理系 
统就要求必须具有能够访问多种数据库的能力,而且可以根据程序要 
求,在多种数据库间动态切换。应用Power Builder提供的PowerScrip 
t设计语言,通过ODBC,可以很方便地达到这个目的。 
    为了解决应用程序和数据库之间的通讯,Power-Builder使用一个 
特殊的对象,这个对象称作事务对象(TRANSACTION OBJECT)。象所有 
的对象一样,事务对象也具有自己的事件、属性和函数。在使用事务 
对象之前,必须先建立对象,并且给事务对象的属性赋值。ODBC使用事 
务对象中有两个重要属性:DBMS和DbParm。DBMS用来指明要连接的数 
据源,如果使用ODBC技术,则赋给属性DBMS的值是"ODBC"。Db-Parm为D 
BMS的说明性参数,它的值是连接数据库所需要的参数组成的字符串, 
该值必须指明DSN(DATA SOURCE NAME)值,DSN值告诉ODBC要存取的数 
据源。可以说,一个事务对象标识了一个数据库,因此,它必须在存取 
该数据库前就要建立。为了方便用户的应用,Power Builder还提供了 
一个全局的缺省事务对象,即每当应用程序启动时,Power Builder都 
要自动建立一个称作SQLCA(SQL COMMUNICATION AREA)的事务对象,不 
需要用户建立。当一个应用程序初始启动时,连接数据库所需的缺省 
信息都是存放在初始化文件PB.INI中。 
    下面是在PB.INI文件中用于与Foxpro数据库连接的部分。 
    [Database] 
    Vendors=ODBC,SYS Sybase system 10 
    DBMS=ODBC 
    ServerName= 
    Database= 
    UserId= 
    .... 
    [DBMS_PROFILES] 
    CURRENT=Foxpro 
    PROFILES="Foxpro","dBASE" 
    .... 
    [Profile Foxpro] 
    DBMS=ODBC 
    DataBase=c:\fox 
    UserId=Public 
    DatabasePassword= 
    Logpassword= 
    ServerName= 
    DbParm=ConnectString=‘DSN=C_Foxpro;D 
    BQ=C:\fox;FIL=Foxpro 2.5; 
    在上述的PB.INI中的Profile Foxpro段,指出了DBMS是ODBC,DbPa 
rm指明了要连接的数据源名是C_Foxpro。对于一个ODBC数据库来说,D 
bParm字符串包含了连接所需要的全部信息。一般情况下,要在多个数 
据库间动态切换,只有一个缺省的SQLCA事务对象就够了。当需要切换 
到其它ODBC数据库时,可以应用Script语言,改变SQLCA事务对象的属 
性,完成切换。比如当需要切换到DBASE数据库时,可以插入如下Scr 
ipt语句。 
    SQLCA.DBMS="ODBC" 
    SQLCA.DbParm="Connectstring=‘DSN=cdbase;DBQ=c:\db4;fil= 
dbase4’" 
    CONNECT USING SQLCA; 
    当需要再切换到Foxpro时,再插入如下Scrift语句
    SQLCA.DBMS="ODBC" 
    SQLCA.Dbpram="Connectstring=‘DSN=C_Foxpro;DBQ=C:\fox;FI 
L=Foxpro 2.5;’" 
    CONNECT USING SQLCA; 
    由于SQLCA是缺省的事务对象,所以CONNECT语句可以不指出事务 
对象的名字,只写CONNE CT即可。 

    三、同时访问多个数据库 
    当需要在一个应用中同时访问多个数据库时,就要用到多个事务 
对象。可以用SQLCA与一个数据库连接,但是对于其它的数据库,每个 
库则必须建立一个事务对象。在创建事务对象前,应考虑它的使用范 
围,可根据需要声明为全局对象或实例对象。 
    下面以在一个应用中需同时操作Foxpro和Access两种数据库为例 
,说明创建事务对象的过程。该例要在同一个数据窗口中同时显示Fox 
pro中的AA表和Access中的BB表,PowerScrip t语句如下
    ∥声明事务对象 
    Transaction Tr_foxpro 
    Transaction Tr_access 
    ∥建立事务对象 
    Tr_foxpro=Create Transaction 
    Tr_access=Create Transaction 
    ∥给事务对象的属性赋值 
    Tr_foxpro.DBMS="ODBC" 
    Tr_foxpro.Dbparm="ConnectString=‘DSN=S_foxpro" 
    Tr_access.DBMS="ODBC" 
    Tr_access.Dbparm="ConnectString"=‘DSN=S_access" 
    ∥建立数据库连接 
    Connect Using Tr_foxpro 
    Connect Using Tr_access 
    要在一个窗口中定义二个不同的数据窗口分别对应二个不同的库 
,首先要按前述的步骤建立各自的数据源,设数据源名分别为S_foxpro 
和S_access。然后在各自的数据源下制作数据窗口。在窗口OPEN事件 
中写入如下Script程序
    ∥建立数据窗口与事务对象的连接 
    Dw_1.Settransobject(Tr_foxpro) 
    Dw_2.Settransobject(Tr_access) 
    ∥将数据库中的数据检索到数据窗口中 
    Dw_1.Retrieve() 
    Dw_2.Retrieve() 
    当这个应用程序执行时,就会在两个数据窗口显示两个数据库的 
内容,读者可以仿照以上的方法,设计出同时访问多个不同数据库的程 
序。 
    以上阐述的是应用ODBC访问不同数据库的方法,Power Builder实 
际上还提供另一种方法访问数据库,即专用数据接口,它的使用方法与 
ODBC有类似之处,读者可参考本文,理解专用数据接口方法。 
1
表情
所有内容均为会员自愿发表,并不代表本站立场.
论坛帮助 会员认证删帖申请 联系我们