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

时间:2015-06-01 19:18:53

标签: c# .net ms-access oledb oledbconnection

我正在使用.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"

每当我尝试连接这个新的连接字符串时,我都会遇到以下异常:

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

任何人都知道如何正确转换此连接字符串以使其有效?我不知道有关Microsoft.ACE.OLEDB.12.0连接字符串参数的文档。

1 个答案:

答案 0 :(得分:0)

以下是我用于ConnectionString的{​​{1}},它可以正常使用。

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$中可以看到的唯一区别是指定系统数据库。也许那个数据库也有密码?