【发布时间】:2019-11-28 06:06:25
【问题描述】:
我不太确定为什么 32 位和 64 位运行环境中的异常存在差异。我正在使用 Visual Studio 2019 测试下一个代码,并将平台从 x86 更改为 x64,反之亦然-
string connectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\Public\Documents\my.accdb";
System.Data.Common.DbConnection connection = new System.Data.OleDb.OleDbConnection(connectionString);
try
{
connection.Open();
}
catch (InvalidOperationException e)
{
// occurs when running on 64-bit runtime
}
catch (OleDbException e)
{
// occurs when running on 32-bit runtime
}
请注意,我没有安装 Microsoft Access 2013/2016 Runtime。为了成功连接到 accdb 文件,您必须安装它,但我正在测试用户是否没有安装它。
我很好奇为什么在 64 位或 x64 平台上也不会发生 OleDbException?
编辑
InvalidOperationException 消息:
“Microsoft.Jet.OLEDB.4.0”提供程序未在本地计算机上注册。
OleDbExceptionMessage:
无法识别的数据库格式“C:\Users\Public\Documents\my.accdb”。
【问题讨论】:
-
这两种不同异常抛出的时候,你检查过它们的内容吗?他们说什么?
-
@mjwills 我喜欢的是 OleDbException 具有 InvalidOperationException 没有的 Errors 属性。它非常方便。