柴锁柱 柴华
摘 要:在使用Delphi自带的ADO组件开发Access数据库应用程序时,会遇到由于程序存放路径不同导致数据库不能正常连接,致使程序不能正常运行,此问题采用动态链接Access数据库的方法可以解决;结合具体代码阐述了用ADO组件动态链接Access加密数据库的方法和关键技术,使得应用程序可以任何路径都能正常运行。
关键词:Delphi;数据库;Access;ADO组件
DOI:10.16640/j.cnki.37-1222/t.2018.24.100
1 引言
数据库已被广泛应用在各种管理系统中,例如用在仓房粮温监控系统中已得到应用[1]。数据库系统的种类很多,大型数据库如MSSQL Sever、Oracle,小型数据库如Access,在应用中应根据需要选择合适的数据库。开发数据库应用程序的工具有很多,如VB、VC和Delphi等,其中Delphi是由Borland公司推出的可视化集成开发环境,是一种方便、快捷的Windows应用程序开发工具,具有简单、高效和功能强大的特点,采用基于窗体和面向对象程序设计的方法,具有强大的数据库支持,用组件库封装了丰富的Windows操作,适合开发数据库方面的应用程序,支持多种数据库结构,从客户机/服务器模式到多层数据库结构模式,先进的数据库引擎,高效的数据分析手段和提供大量的企业组件,采用Delphi开发数据库应用程序成为许多程序员的选择。在应用程序开发过程中,使用TADOConnection组件连接已经设计好的Access数据库既方便又快捷,但是会遇到一些问题:(1)一般在编程时TADOConnection组件的ConnectionString属性已经确定,当将程序移植到其它计算机运行时,由于环境的改变会导致程序无法正常运行;(2)用户可以通过Mircosoft Access软件直接操作数据库,这可能造成数据库的破坏。为了解决第二个问题,需要对数据库加密;为了解决第一个问题,应用程序需要动态修改TADOConnection组件的ConnectionString属性,对加密的数据库进行连接。以Access数据库为例,阐述使用Delphi的ADO组件开发数据库应用程序的方法、步骤和关键问题,以完成对数据库的访问和操作。
2 ADO组件
ADO(ActiveX Data Object)是微软公司推出的一套数据库访问规范。它使应用程序能够通过一种称为OLE DB提供者(OLE DB Provider)的驱动程序访问和操作数据库。而OLE DB 是一个基于COM的数据库访问规则和API函数的集合,并经过了简化。ADO以ActiveX的形式封装了OLE DB,以提供一个更加友好方便的使用方式。使用ADO的好处,一是速度快,占用内存少,因为它直接使用API函数;二是支持基于Web应用开发;三是支持RDS(Remote Data Service),即首先将数据从服务器移动到客户端或Web页上,等到在客户端或Web页上将数据修改后,再将数据回传到服务器上。Delphi 7开发工具自带ADO组件[2],为连接多种数据库提供了方便快捷的方法,这些组件可以分为两大类:连接类型和访问类型。ADO连接组件TADOConnection属于连接类型,用来建立一个数据库连接,为访问类型的ADO组件提供数据库连接,修改TADOConnection组件的ConnectionString属性可以连接不同的数据库。这样ADO数据集组件就可以通过ADO连接组件访问数据库中的数据表。
3 用ADO组件连接Access数据库
结合具体代码阐述使用ADO组件连接并访问加密Access数据库的方法步骤及关键技术要点。
(1)创建一个文件夹,命名为“project”,用来存放项目的源代码;在“project” 文件夹下创建子文件夹,命名为“DataBase”,用于存放Access数据库。
(2)用Access创建一个数据库,命名为“db1.mdb”,保存在DataBase文件夹中;对db1.mdb数据库加密,假设密码为“123456”,创建数据表,命名为“Table1”,为数据表添加字段并添加数据,不再赘述。
(3)打开Delphi集成开发环境,创建一个工程保存在project文件夹下,项目命名为“project1”;新建窗体命名为“Form1”。
(4)在窗体Form1上添加TADOConnection组件,命名为“ADOConnection1
”,TADOConnection组件為Delphi自带的组件,用于连接数据库。需要修改TADOConnection组件的ConnectionString属性,以指定需要连接的数据库。 ADOConnection1的LoginPrompt属性设置为“False”,使得程序运行时不再出现数据库登录窗口。因为ConnectionString属性需要在程序运行过程中设置,所以ADOConnection1的Connected属性设置为“False”。
(5)在窗体Form1上添加TADOQuery组件,命名为“ADOQuery1”
,TADOQuery组件为Delphi自带的组件,用来访问数据表,为TDataSource组件提供数据集。需要修改ADOQuery1的SQL属性以访问数据库中的数据表,修改ADOQuery1的Connection属性以连接数据库。因为还没有连接数据库,所以ADOQuery1的Active属性设置为“False”。ADOQuery1的SQL属性设置为“select * from table1”。ADOQuery1的Connection属性设置为“ADOConnection1”。
(6)在窗体Form1上添加TDataSource组件,命名为“DataSource1”
,TDataSource组件为Delphi自带的组件,为DBGrid1提供数据源。需要修改DataSource1的DateSet属性。DataSource1的DateSet属性设置为“ADOQuery1”。
(7)在窗体Form1上添加TDBGrid组件,命名为“DBGrid1”,TDBGrid组件为Delphi自帶的组件,用于显示数据。需要修改DBGrid1的DataSource属性,设置为DataSource1。
(9)编译并运行应用程序,可以正常访问数据库显示数据表的记录信息。
(10)将project1.exe文件和DataBase文件夹一起复制,粘贴到另外机器的任何一个文件夹下测试,能够正常运行。
4 关键技术问题
(1)创建Access数据库后设置密码,可以防止用户Access软件打开数据库文件,避免了因用户使用Access软件直接修改数据库而造成数据被损坏的情况发生。
(2)使用程序代码修改ADOConnection1组件的ConnectionString属性,主要是采用相对路径访问数据库,指定数据库访问的密码。为了使开发的应用程序能够在不同机器不同路径下都能运行,对数据库进行访问可以采用相对路径的方法,程序代码参见'DataBase\db1.mdb;'这一部分。
5 结束语
实践证明,在Delphi 中使用ADO组件开发Access数据库应用程序,给Access数据库加密,可以有效防止用户直接通过Access软件修改修据库而造成数据库损坏;动态修改ADOConnection1组件的ConnectionString属性,以实现动态连接数据库,使应用程序可以在不同环境下运行。串口通信程序,在Delphi 7中使用ADO组件开发Access数据库应用程序,具有简单方便、开发效率高的特点,结合Delphi的第三方组件CPort串口组件已经在综合项目的开发中得到应用[3],应用效果令人满意。在Delphi 中利用ADO组件开发Access数据库应用程序的方法,对开发Delphi应用程序实践具有一定的指导意义。
参考文献:
[1]柴锁柱.基于RS485的仓房粮温监控网络通信系统[J].沧州师范学院学报,2014,30(01):69-72.
[2]张大年,廖智勇,刘剑锋.Delphi数据库应用开发技术与实例[M].2002(01):428-472.
[3]柴锁柱,柴华.在Delphi中用CPort组件开发串口通信程序[J].内江科技,2015(05):49-50.
作者简介:柴锁柱(1963-),男,河北沧州人,本科,教授,研究方向:嵌入式系统和计算机控制技术。