对于管理信息系统和数据库应用系统的开发,人们往往根据实际需求采用不同的数据库系统。应用这些系统,各单位各部门投入了大量的人力、物力,相继完成了一些管理系统。 现在,当人们希望提高整个管理水平,建立全集团、全公司的企业级信息管理系统时发现,以往已完成的各部门系统采用的是不同的dbms,要想统一起来,非常困难,甚至是不可能的。因此,为了保护过去的投资,利用已建立的信息系统,迫切需要一种能访问多种数据库的操作平台,以便建立更大、更完备、更全面的企业信息管理系统。
为了适应这种需求,microsoft推出了开放数据库互连技术,简称odbc。开放数据库互连接实际上是一个数据库访问库,它包含访问不同数据库所要求的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,建立一个。建立profile后,返回databas e pro-file窗口。选中新定义的profile;如果有,则选择该profile。
·单击ok,则建立了与指定数据库的odbc连接。
此后,在设计power builder的应用程序时,所有对数据库的操作都连接到foxpro。在此要特别说明的是,虽然只访问一种类型的数据库,但是对于同一个数据库,可以建立多个数据源。power builder规定,每个odbc数据源必须有一个唯一的名字,可以使用不同的连接参数,使多个数据源连接到同一个数据库。比如,两个数据源使用不同的password和userid,都连接到foxpro。
二、在多个数据库间动态切换
在设计企业级的信息管理系统时,常常会遇到需要访问不同数据库系统的问题。比如人事部门的人事档案是应用foxpro数据库系统,财务部门的财务信息是应用dbase数据库系统, 因此,企业信息管理系统就要求必须具有能够访问多种数据库的能力,而且可以根据程序要求,在多种数据库间动态切换。应用power builder提供的powerscript设计语言,通过odbc,可以很方便地达到这个目的。
为了解决应用程序和数据库之间的通讯,power-builder使用一个特殊的对象,这个对象称作事务对象(transaction object)。象所有的对象一样,事务对象也具有自己的事件、属性和函数。在使用事务
对象之前,必须先建立对象,并且给事务对象的属性赋值。odbc使用事务对象中有两个重要属性:dbms和dbparm。dbms用来指明要连接的数据源,如果使用odbc技术,则赋给属性dbms的值是"odbc"。db-parm为dbms的说明性参数,它的值是连接数据库所需要的参数组成的字符串,该值必须指明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,dbparm指明了要连接的数据源名是c_foxpro。对于一个odbc数据库来说,dbparm字符串包含了连接所需要的全部信息。一般情况下,要在多个数据库间动态切换,只有一个缺省的sqlca事务对象就够了。当需要切换到其它odbc数据库时,可以应用script语言,改变sqlca事务对象的属性,完成切换。比如: 当需要切换到dbase数据库时,可以插入如下script语句。
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两种数据库为例,说明创建事务对象的过程。该例要在同一个数据窗口中同时显示foxpro中的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有类似之处,读者可参考本文,理解专用数据接口方法。
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器