You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Delphi 10.2中通过ADO连接SQL Server Compact Edition 4.0的.sdf数据库文件?

解决Delphi 10.2连接SQL Server Compact 4.0 (.sdf)的ADO问题

我之前也碰到过类似的坑,核心问题其实是32位/64位驱动和Delphi程序的位数不匹配,再加上手动修改注册表的操作没到位。下面给你一步步梳理解决方案:

1. 先搞定驱动位数的问题

你只装了64位的SQL CE 4.0驱动,但Delphi 10.2默认是32位IDE,编译出来的程序也是32位的——32位程序必须用32位的OLE DB驱动才能识别到。LinqPad能打开是因为它大概率运行在64位模式下,刚好匹配你装的64位驱动,但Delphi的32位环境找不到对应的驱动。

赶紧下载SQL Server Compact 4.0 SP1的32位安装包(一定要找带SP1的版本,兼容性比原版好很多)。安装完成后,32位的OLE DB驱动会自动注册到正确的注册表位置,不需要你手动去改WOW6432Node下的项了。

2. 正确配置ADO连接

安装好32位驱动后,你有两种方式配置ADO连接:

  • 方式一:直接用连接字符串
    跳过提供程序列表选择,直接在ADOConnection的ConnectionString属性里粘贴这段字符串(替换成你的.sdf文件路径):
    Provider=Microsoft.SQLSERVER.CE.OLEDB.4.0;Data Source=C:\YourFolder\YourDatabase.sdf;Persist Security Info=False;
    
  • 方式二:用连接字符串构建器
    打开ADOConnection的连接字符串编辑器,应该能看到Microsoft SQL Server Compact OLE DB Provider 4.0选项,选中后填写.sdf文件路径即可。

3. 手动验证驱动注册(如果还是看不到驱动)

如果安装后还是找不到驱动,打开注册表编辑器检查以下项:

  • 定位到HKEY_CLASSES_ROOT\CLSID\{2006C53A-C915-41EA-BAA9-9EAB3A1FBF97}
  • 确认ProgID键的值是Microsoft.SQLSERVER.CE.OLEDB.4.0
  • 确认InprocServer32的默认值指向32位驱动的DLL:C:\Program Files (x86)\Microsoft SQL Server Compact Edition\v4.0\SSCEOLEDB40.dll

4. 更稳定的替代方案:用FireDAC

其实Delphi自带的FireDAC组件已经原生支持SQL Server Compact,比ADO更省心,不需要依赖OLE DB驱动的注册问题。步骤很简单:

  • 拖一个FDConnection组件到窗体
  • 点击组件的ConnectionDefs属性,新建一个连接,驱动选择MS SQL Server Compact
  • 在参数里设置Database为你的.sdf文件路径
  • 点击“测试连接”,成功后就能正常用FireDAC的查询组件操作数据库了

常见错误排查

  • 如果还是提示“Provider is no longer available”:确认你装的是32位驱动,且Delphi程序的编译目标是32位(默认就是);如果要编译64位程序,必须同时装64位驱动。
  • 如果提示数据库版本不匹配:用SQL Server Compact Toolbox工具打开你的.sdf文件,确认它确实是SQL CE 4.0版本,不是3.5的。

内容的提问来源于stack exchange,提问作者Kenan Bradic

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.27 13:32:42