我编写了一个连接到我们的 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。
谁能帮我解决这个问题,这让我发疯了!
谢谢你,-哈米德