如何从 64 位 .NET 程序集创建 Access 2000 数据库?
How to create an Access 2000 database from a 64 bit .NET assembly?
我们的应用程序需要从 VB.NET 创建一个 .mdb (MS Access 2000) 文件。我们为此使用 ADOX 作为连接字符串
Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Engine Type=5;
这很好用。但是,现在我们希望允许 64 位编译我们的应用程序。由于 Jet 4.0 引擎仅为 32 位,因此必须将连接字符串中的 Provider 更改为 ACE 12.0。但是,当我们使用此提供程序时,会创建一个 MS Access 2010 (.accdb) 文件,而我们需要一个 MS Access 2000 (.mdb) 文件。
我们如何解决这个问题?
您可以使用 ACE DAO 代替 ADOX,如下所示:
' required COM reference:
' Microsoft Office 14.0 Access Database Engine Object Library
'
' Imports Microsoft.Office.Interop.Access.Dao
'
Dim dbe As New DBEngine
dbe.CreateDatabase("C:\path\foo.mdb", LanguageConstants.dbLangGeneral, DatabaseTypeEnum.dbVersion40)
好吧,我们试试运气
Provider=Microsoft.ACE.OLEDB.12.0;Jet OLEDB:Engine Type=5;
瞧瞧:它似乎有效!
我们的应用程序需要从 VB.NET 创建一个 .mdb (MS Access 2000) 文件。我们为此使用 ADOX 作为连接字符串
Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Engine Type=5;
这很好用。但是,现在我们希望允许 64 位编译我们的应用程序。由于 Jet 4.0 引擎仅为 32 位,因此必须将连接字符串中的 Provider 更改为 ACE 12.0。但是,当我们使用此提供程序时,会创建一个 MS Access 2010 (.accdb) 文件,而我们需要一个 MS Access 2000 (.mdb) 文件。
我们如何解决这个问题?
您可以使用 ACE DAO 代替 ADOX,如下所示:
' required COM reference:
' Microsoft Office 14.0 Access Database Engine Object Library
'
' Imports Microsoft.Office.Interop.Access.Dao
'
Dim dbe As New DBEngine
dbe.CreateDatabase("C:\path\foo.mdb", LanguageConstants.dbLangGeneral, DatabaseTypeEnum.dbVersion40)
好吧,我们试试运气
Provider=Microsoft.ACE.OLEDB.12.0;Jet OLEDB:Engine Type=5;
瞧瞧:它似乎有效!