我有一个非常旧的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。如果有其他不需要这个的方法,请告诉我。