荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: icefire (as you wish), 信区: Database
标  题: PowerBulider通过ODBC访问数据库(3)
发信站: BBS 荔园晨风站 (Sat Dec 12 08:51:12 1998), 站内信件

    二、在多个数据库间动态切换
    在设计企业级的信息管理系统时,常常会遇到需要访问不同数据
库系统的问题。比如人事部门的人事档案是应用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

性,完成切换。比如: 当需要切换到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即可。

--
我不愿回首过去
我无力展望未来
但是
我至少拥有现在

※ 来源:.BBS 荔园晨风站 bbs.szu.edu.cn.[FROM: 192.168.0.5]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店