使用DELPHI或C++BUILDER编程的朋友都知道,它们对数据库的访问一般通过BDE(Borland Database Engine)来实现。编制数据库管理程序首先要通过SQL Explorer等来设置数据库BDE别名,程序发布时还必须在安装程序中设置,这种方式通用性、灵活性非常差。其实INPRISE已经为我们提供了在程序运行中动态生成访问数据库的BDE别名,动态修改访问参数的方法。假设我们已经在c:\temp下存有两个数据库data1.mdb,data2.mdb,data1 中包含有table1表,data2中包含有TABLE2表。下面以访问这两个数据为例介绍其具体实现方法:
一、生成动态(临时)的BDE别名
1、新建一个工程。
2、将TDatabase,TTable,TDataSouce,TDBGrid放在窗体上。
3、双击TDatabase,弹出Form1.Database1 Database对话框,在NAME中输入临时的别名MYDB,在Driver name中选择MSACCESS项,点击Defaults,Parame- teroverrides中会加入一些我们访问数据库所需要的参数:
DATABASE NAME=DRIVE:/PATH/DATABASE.MDB
USER NAME=
OPEN MODE=READ/WRITE
LANGDRIVER=
SYSTEM DATABASE=
PASSWORD=
将DATABASE NAME项改为DATABASE NAME=c:\temp\data1.mdb,点击OK退出。
4、将Table1的DatabaseName属性指向MYDB,TableName属性设置为table1。
5、将DataSource1的DataSet属性指向Table1,DBGrid1的DataSource属性指向DataSource1。
6、双击窗体,在窗体的FormCreate事件中加入 table1.Active := True;
7、运行程序,在DBGrid中就可以看到Data1.mdb的table1中的内容了。
以上也可以通过程序语句方式实现:
1、新建一个工程,
2、在窗体上放置TDatabase,TTable,TDataSouce,TDBGrid元件。
3、在ForCreat事件中加入下列语句:
Database1.DatabaseName:= 'MYDB';
Database1.DriverName:= 'MSACCESS';
Database1.Params.Clear;
Database1.Params.Add
('DATABASE NAME=C:\TEMP\DATA1.MDB');
Table1.DatabaseName:= 'MYDB';
Table1.TableName:= 'table1';
DataSource1.DataSet:= Table1;
DBGrid1.DataSource:= DataSource1;
Table1.Active:= True;
二、程序运行中修改访问参数
TDatabase访问数据的一些参数都放在Params属性中,这些参数是以TStringList格式存放的。我们修改参数值就可以访问其他数据库。下面举例实现在程序运行中由访问数据库data1改为访问data2。
1、在窗体中加入按纽Button1。
2、Button1Click事件中加入下列代码:
database1.Close ;
database1.Params.Values
['DATABASE NAME']:='c:\temp\data2.mdb';
file://以上一句是更改访问数据库
Table1.TableName :='table2';
table1.Active := true;
编译执行后,我们先看到的是data1的内容,点击按纽后,DBGrid中便改为 data2中Table2的内容了。
对于其它数据库、网络数据库的访问参数,可在双击TDatabase后弹出对话框中选定相应Driver name,然后点击Defaults获得,具体参数值可参照以上程序及有关资料。
延伸阅读
文章来源于领测软件测试网 https://www.ltesting.net/