在程序中动态创建并修改BDE别名

发表于:2007-05-26来源:作者:点击数: 标签:
使用DELPHI或C++BUILDER编程的朋友都知道,它们对数据库的访问一般通过BDE( Borland Database Engine)来实现。编制数据库管理程序首先要通过 SQL Explorer等来设置数据库BDE别名,程序发布时还必须在安装程序中设置,这种方式通用性、灵活性非常差。其实INPR

  使用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获得,具体参数值可参照以上程序及有关资料。

原文转自:http://www.ltesting.net