Delphi 实现远程连接 Access 数据库的指南
方法一:通过局域网共享 Access 文件(简单但有限)
步骤 1:共享 Access 数据库
将 .mdb 或 .accdb 文件放在局域网内某台电脑的共享文件夹中。
右键文件夹 → 属性 → 共享 → 启用共享并设置权限(需允许网络用户读写)。
步骤 2:配置 Delphi 连接字符串
在 Delphi 中使用 ADO 组件(如 TADOConnection)。
设置连接字符串,指向共享路径:
delphi
// 使用 UNC 路径(推荐)
ADOConnection.ConnectionString :=
'Provider=Microsoft.ACE.OLEDB.12.0;' +
'Data Source=\\服务器IP或名称\共享文件夹名\数据库名.accdb;' +
'Persist Security Info=False;';
若使用用户名密码,添加 Jet OLEDB:Database Password=密码;
步骤 3:处理权限和防火墙
确保远程计算机允许文件共享(Windows 防火墙开放 445 端口)。
共享文件夹的权限需允许网络用户访问。
注意事项
并发性能差:Access 不适合高并发,建议少于 5 个用户。
延迟问题:频繁读写可能导致网络延迟。
方法二:通过 SQL Server 链接远程 Access(更稳定)
步骤 1:将 Access 迁移到 SQL Server
在 SQL Server 上使用 SQL Server Management Studio (SSMS)。
右键数据库 → 任务 → 导入数据 → 选择 Access 文件导入。
步骤 2:配置 Delphi 连接 SQL Server
使用 TADOConnection 或 TFDConnection(FireDAC)。
连接字符串示例:
delphi
// ADO 连接 SQL Server
ADOConnection.ConnectionString :=
'Provider=SQLOLEDB;' +
'Data Source=服务器IP或名称;' +
'Initial Catalog=数据库名;' +
'User ID=用户名;Password=密码;';
步骤 3:配置 SQL Server 远程访问
启用 SQL Server 的 TCP/IP 协议(通过 SQL Server 配置管理器)。
在防火墙开放 1433 端口(默认端口)。
方法三:使用中间件(推荐复杂场景)
HTTP API:将 Access 数据库部署在服务器,通过 Delphi 编写客户端,使用 REST 或 Indy 组件通过 HTTP 调用 API。
DataSnap:使用 Delphi 的 DataSnap 框架创建中间服务器,转发数据库请求。
常见问题排查
连接失败:
检查路径是否正确(UNC 路径需用双反斜杠 \\)。
确保防火墙未阻止端口。
测试共享文件夹能否通过资源管理器直接访问。
权限不足:
共享文件夹和数据库文件需赋予 Everyone 或指定用户读写权限。
驱动问题:
安装 Microsoft Access Database Engine。
总结
简单场景:使用方法一(共享文件),但需注意性能限制。
企业级应用:迁移到 SQL Server(方法二)或使用中间件(方法三)。
安全建议:通过 VPN 或 SSH 隧道加密传输数据。