如何导入旧的mdb-database到c# DataTable



我有一个非常旧的mdb数据库。我想加载所有表从数据库到一个c#数据表。如果可能的话,最终的工具应该是独立的,不需要安装额外的软件。

环境
  • 。NET 5.0
  • Visual Studio 2019
  • Windows 10 - 64位
  • Office 365 - 32位

问题:

  • 这个代码看起来像什么?
  • 我需要添加/安装哪些包?
  • 还有其他依赖关系吗?

代码:

string dbLocation = "DatabaseName.mdb";
string tableName = "TableName";
string connString =  $"Provider=Microsoft.ACE.OLEDB.12.0;Data Source={dbLocation}";
DataTable results = new DataTable();

using (OleDbConnection conn = new OleDbConnection(connString))
{
OleDbCommand cmd = new OleDbCommand($"SELECT * FROM {tableName}", conn);

conn.Open();
OleDbDataAdapter adapter = new OleDbDataAdapter(cmd);
adapter.Fill(results);
}

条件:

  • 为了安装office版本(32/64位),您必须安装Microsoft Access Database Engine 2010/2016 Redistributable(对我来说是2010年)。大多数办公设备都是32位的。

    • Microsoft Access Database Engine 2010 Redistributable

    • Microsoft Access Database Engine 2016 Redistributable

  • 如果你选择了正确的版本,仍然得到一个错误,试图在静默模式下安装

accessdatabaseengine.exe /quiet
  • 添加System.Data.OleDb
  • 应用程序的目标平台必须根据使用的其他软件包设置为x86/x64

仍未解决:

  • 实际上你需要安装Microsoft Access Database Engine Redistributable。如果有其他不需要这个的方法,请告诉我。

相关内容

  • 没有找到相关文章

最新更新