我已经编写了一个通过无线网络运行的小型(8-10台笔记本电脑)销售点系统,作为一个HTA,可以读取/写入位于网络共享上的Access MDB。 我需要使用ADO - GetString并且用户名单不适用于DAO 我还需要使用DAO - MDB不能用ADO压缩。
我知道:
1)如果数据库后端不是Access MDB,我应该使用ADO
2)如果后端是MDB,但我想在某个时候升级到SQL Server,我应该使用ADO。
3)在Access应用程序或任何其他VBA / VB应用程序中,我应该使用DAO,因为ADO必须通过Jet OLE DB提供程序的转换层,而DAO更直接。
4)VBScript / JScript允许我使用DAO或ADO。
这个由两部分组成的问题如下:
1)在这个软件环境(HTA /脚本)中,使用ADO而不是DAO更好吗?
2)ADO是否提供任何好处,因为HTA通过无线网络进行读/写?
答案 0 :(得分:3)
如果您需要DAO的唯一原因是压缩数据库,您可以使用DAO,并将ADO用于其他所有内容。您不仅限于使用ADO或DAO。
使用ADO的最大好处是,到时候移动到SQL Server Express会更容易。您应该尽早而不是这样做,因为SQL Server Express提供了MSAccess数据库的所有好处而没有缺点。 SQL Server Express是免费的,它可以轻松处理您提出的系统大小。
Access数据库在多用户环境中容易损坏,尤其是涉及无线网络时。如果您担心失去使用MSAccess的好处,您仍然可以使用链接表附加到SQL Server,并以这种方式使用SQL Server Express数据库。
答案 1 :(得分:2)
您还可以使用JRO压缩MDB文件。这将包含在MDAC的任何最新版本中,默认安装在XP及更高版本的系统上。无需安装Access。
回答您的具体问题:
1)我会选择ADO只是因为它更新,并且可以在其他类型的脚本中使用相同的API,例如LDAP / ActiveDirectory访问,读取文件系统文件夹,读取MAPI邮件以及使用其他类型半结构化文本文件,如固定宽度文本和CSV。对于HTA编程环境来说,它并不是特别好,但它可能更适合您学习更广泛适用的API。我也认为这是一个更容易使用的API,但我从它开始,后来才开始研究一些旧的DAO项目。
2)ADO提供的一个可能的好处是断开连接的记录集,它可能具有优势,或至少在您的无线网络设置中提出一些架构备选方案。您打开一个记录集,然后断开它,这样您仍然可以处理内存中的数据,但不必打开数据库连接。然后,稍后您可以重新连接并更新数据库。此外,通过将表作为本地XML或ADTG文件进行管理,您可以使用完全断开连接的样式。
答案 2 :(得分:2)
你可能会把DAO搞砸到使用VBScript工作,但这是一个奇怪的配对。 ADO一般来说最有意义。
ADO的另一个优点是它支持RDS over DCOM或HTTP。这可用于克服通过文件共享使用的Jet MDB的许多限制,例如不可靠的网络和客户端可能导致的损坏。它还可以减少网络上的流量,从而提高性能。此外,它还提供了一个中间层,业务对象可以在其中“生存”,所有这些都可以在适用的情况下使用COM +进行调解。
当然,您不再可以选择使用简单的P2P网络和文件共享来托管数据库。 RDS需要服务器来托管进程并运行Jet引擎,不再需要在每个客户端系统上运行。这意味着您可以使用在服务器上运行的Jet存储过程,卸载更多客户端处理和网络流量。虽然没有T-SQL或其他替代方案那么复杂,但这种ADO / Jet 4.0 OLE DB提供程序专有技术提供了使用DAO无法获得的实实在在的好处。
RDS可以掩盖使用断开连接的Recordset的大部分过程,从而简化客户端代码。它使用引擎盖下的ADTG,它是为此目的而开发和优化的。
然而,使用RDS需要比简单文件共享更多的基础架构和专业知识。您还可以查看SQL Server的低端版本。
一般情况下,我建议使用jetcomp.exe实用程序来压缩和修复DAO或JRO。它具有许多优点。
答案 3 :(得分:1)
如果您能够使用Access而不是更高性能的平台使用HTA应用程序,我会说你应该选择最简单的api。在您的情况下,瓶颈永远不会是db访问的抽象。不过,DAO真的很老了。