创建Oracle Connection会导致COM类检索错误

时间:2012-10-03 20:03:05

标签: vb.net oracle

我在VB.NET中编写一个应用程序,要求我使用Oracle Data Access Client查询Oracle数据库。然后,我使用称为SCAPI接口的东西来访问我们用于数据建模的应用程序的元数据。

我已将问题简化为仅通过单击表单上的按钮执行的两个函数。

单击表单上的按钮时执行此功能。它创建了一个oracle连接但实际上并没有执行任何查询(因为我已经评论了其余的并仍然得到错误):

Private Sub btnDisplayDirectories_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDisplayDirectories.Click
    Dim ModelMart As String = "Data Source=...;User Id=...;Password=...;"
    Dim OraConn As New OracleConnection(ModelMart)
    OraConn.Open()
    OraConn.Close()
    OraConn.Dispose()
End Function

此函数只使用SCAPI接口创建应用程序对象:

Private Sub btnOpenModel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)         Handles btnOpenModel.Click
    Dim oAPI As New SCAPI.Application
End Sub

如果我启动应用程序,并且首先单击btnOpenModel,然后单击btnDisplayDirectories,则没有问题。如果我点击btnDisplayDirectories,然后点击btnOpenModel,我在btnOpenModel的第一行上出现错误,上面写着:

Retrieving the COM class factory for component with CLSID {2B2219EB-EDE7-49EE-BB89-5A0B4A398A63} failed due to the following error: 80004005.

我实际上已经进行了实验,我甚至不必打开Oracle连接来获取此错误,只是定义Oracle Connection会导致错误。

1 个答案:

答案 0 :(得分:0)

我通过将SCAPI.Application对象创建为全局变量来解决问题。这会导致SCAPI在数据库对象执行之前获得所需的任何资源。我无法弄清楚为什么SCAPI和Oracle / ODBC程序集彼此不能很好地发挥作用。