MS Access 在C#中使用DAO的踩坑记录

本文介绍了在C#中使用DAO接口访问Access数据库时遇到的问题及解决方案。DAO作为默认接口历史悠久,虽然在2007年后被ACE引擎和ACEDAO取代,但依然可以在C#中使用,只需注意JET引擎的32位限制和文件格式的转换。文章还提到了使用ACE引擎的条件,即需要安装相应的数据库引擎,并提供了相关的技术对比图。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MS Access 在C#中使用DAO的踩坑记录

DAO是微软为访问Access数据设计的特殊接口。从Access2.0出现,DAO一直是作为默认的接口存在。ADO是作为DAO的一种替代方案一直存在。DAO和ADO可以在一个项目中同时使用。历史上,微软曾经在2003推荐使用ADO,但是后来2007后,又将DAO作为默认接口。

在Access2007之前,文件形式一直是mdb,数据库引擎最高为JET4.0,DAO接口最高版本为DAO3.6。DAO是Windows系统中自带的库,所以在C#开发中甚至不需要安装JET引擎和DAO的库。这里需要注意,JET引擎只有32位版本,未来也不会出64位版本,所以程序编译需要选择x86平台,否则会报错。另一个小技巧需要注意,Access2.0和1995虽然使用mdb文件形式,但是在最新版的Access中是打不开的。如果是手动的转换文件形式,可以用2003-2007版的Access打开95版的后保存后,再用最新版2019打开,可以实现转换为accdb。如果想用代码实现mdb到accdb文件的转换可以参考这个库中的603号函数,具体使用方法未做研究。Microsoft.Office.Interop.Access;
accessApp.SysCmd((Access.AcSysCmdAction)603, sourceFile, desFile);

在2007版之后,文件形式更改为accdb,JET引擎和DAO3.6都被微软弃用,取而代之的是ACE
引擎和ACEDAO。如果在VC++中使用CDAODATABSE或者CDAOTABDEF或者CDAORECORDESET这种库,会发现MSDN上标记了obsolete。但这不意味着,DAO3.6不能在使用,而是不再支持ACE引擎中更新的功能。老的程序使用DAO3.6,不用担心在未来运行不了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值