我想升级我的应用程序以使用更新的 Access 2007/2010 数据库引擎。它目前将其数据存储在 Jet 4.0 (MDB) 数据库中。我的应用程序是用 Delphi 编写的,它使用 ADODB(ADO 经典)与数据库进行交互。我想从 Jet 4.0 升级数据库引擎,以便提供更好的加密选项。
我将应用程序中的连接字符串更改为使用 Microsoft.ACE.OLEDB.12.0,尽管出现了一些小问题,但转换过程非常顺利!令人印象深刻的向后兼容性。
我还将我的应用程序以 Wine 包的形式分发给 Mac 用户。在 Wine (1.4-rc1) 上的 Access 2010 数据库引擎下运行我的应用程序时遇到了一些问题。出现奇怪的访问冲突。当我在 Wine 上安装 Access 2007 数据库引擎时,我的应用程序运行良好。与 Jet 4.0 一样好。因此,Access 2010 数据库引擎似乎还没有为 Wine 做好准备。无赖!
我遇到的问题是,如果您在 Windows 机器上安装了 Access 2010 数据库引擎(例如在安装 Access 2010 时),当它创建一个新数据库时,它会使用与Access 2007。我的应用程序的用户无法在他们的 PC 和 Mac 之间共享他们的数据库(即通过 Dropbox),因为它们不再兼容。
在 Access 2010 中,您可以将其设置为“使用旧版加密”选项。此选项导致 Access 2010 使用与 Access 2007 兼容的加密创建新数据库。此选项设置注册表项“CompatMode”,并且在这种情况下,Access 2010 应用程序必须采用不同的方法来创建新数据库。
我的问题是:如何以编程方式从 Access 2010 数据库引擎创建与 Access 2007 兼容的加密数据库?如果 Access 2010 应用程序可以做到,我该怎么做?我知道创建 Access 数据库的两种技术:1. 通过 DAO (DBEngine.CreateDatabase),2. 通过 ADOX (Catalog.Create)。我一直在尝试使用这两种技术的各种方法,但想不出任何方法来创建与 Access 2007 兼容的加密数据库。