0

我编写了一个连接到我们的 Oracle DB 并执行简单查询的 Windows 应用程序。该查询适用于我的开发 PC。当我发布应用程序并从域中的其他计算机运行它时,它成功连接到数据库,但读取器不返回任何行。它出现错误“对已关闭对象的无效操作”,但在我的开发 PC 上,它从正确的 SELECT 语句返回许多行。

我对 ldap_admin 和 tns_admin 有正确的设置,并且连接在所有计算机上都有效。

    Dim constr As String = "Data Source=ABC;User Id=XX;Password=XX;"
    Dim conn As OracleConnection = New OracleConnection(constr)
    Dim cmd As New OracleCommand
    Dim dr As OracleDataReader
    Try
        conn.Open()

        cmd.Connection = conn
        cmd.CommandText = "SELECT TableA.name FROM TableA "
        cmd.CommandType = CommandType.Text
        dr = cmd.ExecuteReader()

        MsgBox(conn.DatabaseName)
        MsgBox(conn.HostName)
        MsgBox(conn.GetSessionInfo.TimeZone)
        MsgBox(conn.InstanceName)
        MsgBox(conn.ServiceName)
        MsgBox(conn.ConnectionTimeout)

        MsgBox(dr.HasRows() & ":" & dr.FieldCount & ":" & dr.GetName(0) & ":" & dr.IsClosed())
        dr.Read()
        MsgBox(dr.Item(0))
        If dr.Read() Then
            MsgBox("Read complete!!!")
            TextBox1.Text = dr.Item(0) ' or use dr.Item(0)
        Else

        End If

    Catch ex As Exception ' catches any error
        MessageBox.Show(ex.Message.ToString())
    Finally
        ' In a real application, put cleanup code here.


        MsgBox("Connected Successfully")
        dr.Close()

        conn.Close()
    End Try

我已将 msgboxes 用于检查其他计算机上的连接。消息框显示所有计算机上的正确信息。dr.Hasrows() 在我的开发计算机上仅返回 True。域上的所有其他计算机为此返回 false。

谁能帮我解决这个问题,这让我发疯了!

谢谢你,-哈米德

4

0 回答 0