在Delphi开发中连接Access数据库时,配置ODBC数据源是很多新手的第一选择,但这种方式的弊端很明显:程序部署到用户电脑时,需要手动配置数据源,操作繁琐还容易出错。其实我们可以完全跳过数据源配置步骤,直接通过ADO组件连接Access数据库,下面就把具体实现方法讲清楚。

核心组件说明
实现无数据源连接Access,主要用到两个Delphi自带的ADO组件:
TADOConnection:负责建立和维护与数据库的连接,是所有数据库操作的基础TADOQuery:用于执行SQL语句,完成数据的查询、新增、修改、删除等操作
连接字符串的编写
无数据源连接Access的核心是正确编写TADOConnection的ConnectionString属性,这里不需要引用任何ODBC数据源名称,直接指定Access数据库文件的路径即可。针对不同版本的Access,连接字符串略有区别:
| Access版本 | Provider参数 | 适用文件后缀 |
|---|---|---|
| Access 97及之前 | Microsoft.Jet.OLEDB.4.0 | .mdb |
| Access 2007及之后 | Microsoft.ACE.OLEDB.12.0 | .accdb |
完整的连接字符串格式如下,其中Data Source后面填写你的Access数据库文件的绝对路径或者相对路径:
// Access 2003及之前版本(.mdb文件)连接字符串 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Test\test.mdb;Persist Security Info=False' // Access 2007及之后版本(.accdb文件)连接字符串 'Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Test\test.accdb;Persist Security Info=False'
完整实现示例
下面给出一个完整的示例,实现连接同目录下名为test.mdb的Access数据库,查询表中的数据并显示在TMemo组件中:
步骤1:放置组件
在窗体上放置TADOConnection、TADOQuery、TDataSource、TDBGrid、TMemo各一个,按如下关系关联:
TADOQuery.Connection关联到ADOConnection1TDataSource.DataSet关联到ADOQuery1TDBGrid.DataSource关联到DataSource1
步骤2:编写连接代码
在窗体的OnCreate事件中编写如下代码:
procedure TForm1.FormCreate(Sender: TObject);
var
DbPath: string;
begin
try
// 获取Access数据库文件路径,这里使用程序同目录下的test.mdb
DbPath := ExtractFilePath(ParamStr(0)) + 'test.mdb';
// 配置连接字符串,使用Jet引擎连接mdb文件
ADOConnection1.ConnectionString :=
'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' + DbPath + ';Persist Security Info=False';
// 建立连接
ADOConnection1.Connected := True;
ShowMessage('数据库连接成功');
except
on E: Exception do
ShowMessage('数据库连接失败:' + E.Message);
end;
end;步骤3:执行查询操作
添加一个按钮,在按钮的OnClick事件中编写查询代码:
procedure TForm1.Button1Click(Sender: TObject);
begin
try
// 关闭之前的查询
ADOQuery1.Close;
// 设置SQL语句,查询user表的所有数据
ADOQuery1.SQL.Text := 'select * from user';
// 执行查询
ADOQuery1.Open;
// 将查询结果显示在Memo中
Memo1.Lines.Clear;
while not ADOQuery1.Eof do
begin
Memo1.Lines.Add('用户ID:' + ADOQuery1.FieldByName('id').AsString +
',用户名:' + ADOQuery1.FieldByName('username').AsString);
ADOQuery1.Next;
end;
except
on E: Exception do
ShowMessage('查询失败:' + E.Message);
end;
end;注意事项
- 如果连接的Access文件是2007及以上版本的
.accdb格式,需要确保目标电脑安装了Microsoft Access Database Engine,否则会提示找不到Provider的错误 - 使用相对路径时,要注意程序运行时的当前目录,避免出现找不到数据库文件的问题
- 操作完成后,记得及时关闭
ADOQuery和ADOConnection,释放数据库资源 - 如果Access数据库设置了密码,需要在连接字符串中添加
Jet OLEDB:Database Password=你的密码;参数
这种无数据源的连接方式同样适用于其他支持ADO连接的数据库,只需要修改对应的Provider参数和连接字符串即可,不需要额外配置系统数据源,非常适合需要快速部署的Delphi桌面程序。