在Delphi数据库编程中,有时我们想避开BDE数据引擎,这样就可以减少非常大的额外开销。这时,我们就要用ADO控件了,(ADO控件是微软用来存取各种数据的高级接口技术,也叫OLE DB)。下面就是一个用ADO控件读取Access数据库的程序。
首先在窗体中加入以下控件:
button1,label1,label2,listbox1,edit1控件(它们在Standard选项卡上);
opendialog1控件(在Dialogs选项卡上)
datasource1控件(在Data Access选项卡上)
dbgrid1控件(在Data Controls选项卡上)
adoconnection1,adotable1控件(在ADO选项卡上)
给它们添加适当的属性,使它们如

1所示。它们的要添加的属性如下:
button1:caption 属性:'打开';
label1:caption 属性:'Access文件';
label2:caption 属性:'请选择表';
edit1:text 属性:' ';(即空白)
opendialog1:filter属性:*.mdb|*.mdb;
dbgrid1:datasource 属性:datasource1;
datasource1:dataset 属性:adotable1;
adotable1:connection 属性:adoconnection1;
adoconnection1:loginprompt 属性:false;
添加属性后,我们就给事件添加程序代码,只要在button1的onclick事件和listbox1的ondblclick事件中添加程序即可,添加的程序如下:
button1的onclick事件:
procedure TForm1.Button1Click(Sender:TObject)
var
myaccess:string;
const
myStr1='Provider=%s;Data Provider=%s;Data Source=%s';
{给出接口参数}
myprovider='msdatashape.1';
mydataprovider='microsoft.jet.oledb.4.0';
begin
opendialog1.FileName:='*.mdb';
if opendialog1.Execute then
begin
myaccess:=opendialog1.FileName;
edit1.Text:=myaccess;
adoconnection1.Connected:=false;
adoconnection1.ConnectionString:=format(mystr1,
[myprovider,mydataprovider,myaccess]);
adoconnection1.Connected:=true;
adoconnection1.GetTableNames(listbox1.Items);
end;
end;
listbox1的ondblclick事件:
procedure TForm1.ListBox1DblClick(Sender:TObject)
begin
adotable1.Close;
adotable1.TableName:=listbox1.Items.Strings[listbox1.itemindex];
adotable1.Open;
end;
添加程序后运行,试着打开一个Access文件。比如我打开一个在E盘的“E:\My Documents\myaccess1.mdb”文件(

2),该文件中有五个表,双击任何一个就会自动打开。致于对数据库的添加、删除等操作,adotable控件和table控件差不多,这里就不说了,有兴趣的读者可以自己试试(以上程序已在Delphi 5.0中调试通过和在没有安装Delphi及BDE的电脑上运行成功)。