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

ブロックを使用することをお勧めします(最後に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 に答える