c#程序在连接打开MDAC 2,6或更高版本后使用Microsoft.Jet.OLEDB.4.0获得错误



旧的c#程序不再能够通过Jet.OLE.DB读取MS-Access数据库。而且,没有对源代码进行任何更改的新编译也没有帮助。

我的笔记本电脑是Windows 10, MS Office是LTSC Professional Plus 2021 32位。

我卸载了Office LTSC 64位以安装Office LTSC 32位,并且正在尝试安装以下推荐的运行时包来解决问题:

  1. AccessDatabaseEngine.exe
  2. mdac28sdk.msi
  3. AccessRuntime2007.exe
  4. AccessRuntime_x86_en-us.exe

我们的客户使用MS Access,因为他已经将Excel中的数千个宏链接到Access中,并且无法切换到其他数据库。

在当前的Windows 10 OS 64位环境中不可能使用OLE,这就是我切换到ODBC的原因,它可以工作。

我放弃了使用Visual Studio 2022,现在切换到ACE,因为VS 2022真的很奇怪。我尝试更新当前的VS 2017项目,但我无法选择高于4.8的。我创建了一个新项目然后我可以选择。NET 6或。7如果我选择" Windows窗体应用程序"而不是"Windows窗体应用程序(。NET框架)";但是工具箱是空的。

/*old code*/
string connStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Datenbank + ";";
OleDbConnection  conn = new OleDbConnection(connStr);
String strCommand = "SELECT * FROM Tickets WHERE [Ticket_Nummer] = @Ticket_Nummer";
OleDbDataAdapter da = new OleDbDataAdapter(strCommand, conn);
da.SelectCommand.Parameters.Add("@Ticket_Nummer", OleDbType.Integer).Value = Ticket_Nummer;
/*new code*/
string connStr = "Driver={Microsoft Access Driver (*.mdb)};"
+ "Dbq="+ Datenbank+";Uid=Admin;Pwd=;";
OdbcConnection conn = new OdbcConnection(connStr);
String strCommand = "SELECT * FROM Tickets WHERE [Ticket_Nummer] = ?";
OdbcDataAdapter da = new OdbcDataAdapter(strCommand, conn);
da.SelectCommand.Parameters.Add("@Ticket_Nummer", OdbcType.Numeric).Value = Ticket_Nummer;
/*rest code*/
DataSet  DataSet = new DataSet();
da.Fill(DataSet, "TICKET");
DataTable dataTable = DataSet.Tables[0];
DataTableReader  dr = new DataTableReader(dataTable);

相关内容

最新更新