如何添加预防措施以绕过未注册Microsoft.ACE.OLEDB.12.0?
How do I add precautions to get around Microsoft.ACE.OLEDB.12.0 not registered?
当我在家用计算机上使用以下代码时,它对我来说工作正常。但是,我必须在多台不同的机器上使用它。
"Provider = Microsoft.ACE.OLEDB.12.0;"
我在想可以解决这个问题,因为我需要它以更通用的格式,以便它可以在多台机器上运行。
我希望可以有一个解决方法,也许通过在代码中包含替代提供程序(如果可能的话(或捕获或 if 语句来重新运行代码,但如果找不到第一个,则使用备用提供程序。
它将更改为Microsoft.Jet.OLEDB.4.0
如果有人可以编写一些代码来解决此问题,以便我的程序可以考虑这两个提供程序,那就太好了,因为它会使我的项目更具通用性。
后台代码(忽略不安全的 SQL,除非你想修复它(:
OleDbDataReader^ openData(String^ fieldEntity, String^ field, String^ tableName)
{
String^ sqlstr = "SELECT * FROM ";
sqlstr += tableName + " WHERE " + field + " = " + fieldEntity;
OleDbConnection^ conn = nullptr;
conn = gcnew OleDbConnection("Provider = Microsoft.ACE.OLEDB.12.0;" +
"Data Source =" + "myDatabaseV3.accdb");
OleDbCommand^ cmd = nullptr;
//fix this so that it will consider both providers.
conn->Open();
cmd = gcnew OleDbCommand(sqlstr, conn);
OleDbDataReader^ reader = cmd->ExecuteReader(System::Data::CommandBehavior::CloseConnection);
return reader;
}
我自己解决了这个问题。我意识到我可以在我的类中尝试另一个 catch 语句以更改连接字符串(如果有异常(
conn = gcnew OleDbConnection("Provider = Microsoft.Jet.OLEDB.4.0;" +
"Data Source =" + "myDatabaseV3.mdb");
pause();
OleDbCommand^ cmd = nullptr;
//fix this so that it will come out of the current directiory
try {
conn->Open();
}
catch (Exception^ ex)
{
conn->ConnectionString = "Provider = Microsoft.ACE.OLEDB.12.0;" +
"Data Source =" + "myDatabaseV3.accdb";
conn->Open();
}
如果你想要这些的顺序,你可以切换这些并不重要。此外,如果此解决方案无效,则可以使用嵌套的try catch语句。但是,我的代码特别是在一个类中具有此功能,并且无论如何运行方式都在代码的另一部分进行尝试捕获,因此对我来说是不必要的。
相关文章:
- 无法将结构注册为增强几何体3D点
- 如何使用AngelScript注册SFML Vector2运算符
- 在遍历处理程序的向量时注册和注销处理程序
- 有没有任务栏API可以立即应用注册表更改
- 使用QJsEngine在Qt中注册自定义类型
- 检查注册表项是否链接到(或副本)另一个注册表项
- 当Microsoft文档仅包含 C# 示例时,如何查找 C++ 包含文件名
- 如何使用 TStyleManager::UnRegisterStyle() 取消注册样式
- 带有 CKKS 的 Microsoft 密封中的矢量点积
- WINAPI 注册应用程序重新启动时不清除打开的套接字
- SFML 碰撞永远不会在我的系统中注册
- 尝试从C++访问 UWP 的电子邮件邮件类会导致"REGDB_E_CLASSNOTREG类未注册"错误
- 用于创建/注册虚拟存储设备的 IOKit 驱动程序
- 如何添加预防措施以绕过未注册Microsoft.ACE.OLEDB.12.0?
- 与其他编译器相比,相同的代码在工作室Microsoft提供不同的输出
- 进程外 EXE 的免注册 COM
- 使用 Outlook 2016 Microsoft Store 连接到 Outlook COM
- 如何在 SEAL 3.1 中使用 CRT 批处理技术Microsoft?
- 使用 CMake,Microsoft MPI 和 Visual Studio 2017 找不到 mpi.h
- 如何注册Qt C++对象以在QML中使用它