0

我的 Oracle 连接似乎出现间歇性问题,表明信号量存在问题,这表明 Oracle 以某种方式保持连接,而不是在使用它们后将其删除。

这是我使用的代码和连接字符串:

连接字符串:user id=user;password=password;data source=dataSource; Validate Connection=true;Min Pool Size=10;Connection Lifetime=5;Connection Timeout=60;Incr Pool Size=5;

我使用的代码是这样的:

Dim OracleConn As New OracleConnection()
Dim DataTable As DataTable
Dim queryOracle As OracleCommand
Dim OracleDataAdapter As OracleDataAdapter
Dim connStr As String = "user id=user;password=password;data source=dataSource; Validate Connection=true;Min Pool Size=10;Connection Lifetime=5;Connection Timeout=60;Incr Pool Size=5;"
OracleConn.ConnectionString = connStr

Try

            OracleConn.Open()

            queryOracle = OracleConn.CreateCommand()

            queryOracle.CommandText = "select * from table1"

            DataTable = New DataTable()
            OracleDataAdapter = New OracleDataAdapter(queryOracle)
            OracleDataAdapter.Fill(DataTable)

            table1.DataSource = DataTable.DefaultView
            table1.DataBind()

        Catch OracleEx As OracleException
            Throw
        Catch ex As Exception
            Throw
        Finally

            If Not OracleConn Is Nothing And OracleConn.State = ConnectionState.Open Then
                OracleConn.Close()
            End If

        End Try

现在我的问题是:

  1. 这是最好的方法吗?
  2. 我只“关闭”我的连接是否还需要“处理”它?

顺便说一句,我正在使用Oracle.DataAccess.Client

任何帮助都感激不尽

4

2 回答 2

0

我建议你使用 using 块(最后执行 Dispose)

 Using connection As New OracleConnection()

   ....

 End Using

2 应用程序可以多次调用 Close。不会产生异常。

如果调用 Dispose 方法,SqlConnection 对象的状态将被重置。如果您尝试在已处置的 SqlConnection 对象上调用任何方法,您将收到异常。

于 2012-09-03T17:29:26.863 回答
0

尝试将所有内容放在使用之间。

Using oracleConn as OracleConnection = new OracleConnection()
'Your stuff goes here
End Using

命令也是如此。

PS如果再次抛出异常,则无需捕获异常。

于 2012-09-03T17:30:51.563 回答