将连接字符串从Microsoft.Jet.OLEDB.4.0转换为Microsoft.ACE.OLEDB.12.0提供者

本文关键字:Microsoft OLEDB ACE 提供者 转换 连接 字符串 Jet | 更新日期: 2023-09-27 17:52:34

我正在使用一个。net程序,该程序将在将来的某个时候被64位编译,而Microsoft.Jet.OLEDB.4.0将无法工作。

我正在尝试转换这个Microsoft.Jet.OLEDB.4.0连接字符串,看起来像这样:

"Provider=Microsoft.Jet.OLEDB.4.0;OLE DB Services=-4;Password=<PASSWORD>;User ID=<USERID>;Data Source=<ACCESSDATABASE>.MDB;Persist Security Info=True;Jet OLEDB:System database=<SYSTEMDB>.mdw"

到Microsoft.ACE.OLEDB.12.0,看起来像:

"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=<ACCESSDATABASE>.mdb;Jet OLEDB:Database Password=<PASSWORD>;Jet OLEDB:System database=<SYSTEMDB>.mdw;Persist Security Info=False"

每当我尝试连接这个新的connectionstring时,我得到这个异常:

System.Data.OleDb.OleDbException (0x80040E4D): Not a valid account name or password.

谁知道如何正确转换这个连接字符串,使其有效?我知道没有关于Microsoft.ACE.OLEDB.12.0连接字符串参数的文档。

将连接字符串从Microsoft.Jet.OLEDB.4.0转换为Microsoft.ACE.OLEDB.12.0提供者

这是我的ConnectionString,我用Microsoft.ACE.OLEDB.12.0,它工作得很好。

Provider=Microsoft.ACE.OLEDB.12.0; Data Source="$LOCALAPPDATA$'Path'database.mdb"; Persist Security Info=True; Jet OLEDB:Database Password=$PASSWORD$

我在您的ConnectionString中看到的唯一区别是指定了系统数据库。也许那个数据库也有密码?