DOBON.NET DOBON.NETプログラミング掲示板過去ログ

データベース再接続がおかしい…

環境/言語:[Windows2000,VB.NET2003,FrameWork1.1]
分類:[.NET]

先日は有難う御座います。
AppConfigの件は解決したのですが…

調べても情報がなかったのでお聞きします。。
現在、当方ではOracle10gのDBサーバを設けているのですが

VB.NET2003のコードの中でDBに対してコネクションを接続して、コネクションを切断し
コネクションを再度接続した時に、DBサーバに繋がらない(物理的にLAN線を抜きました)にもかかわらず、繋がったようにステータスでは返ってきます。。。

繋がっているとか、繋がっていないは
TryCatchのOleDbExceptionで確認しています。

以下が切断に用いているコードです。。何か不自然な点がありましたら、宜しく御願いします。

    ’変数
Private Dim Handle As New OleDb.OleDbConnection
Private Dim Adapter As OleDbDataAdapter

  ’接続
Public Function Connect()

' 接続文字列作成
Handle.ConnectionString = "Provider="MSDAORA;User ID=TEST;Data Source=hoge;Password=hogehoge"

' エラー情報初期化ルーチン

Try
' 接続成功
Handle.Open()
Adapter = New OleDb.OleDbDataAdapter
Catch e As OleDbException
' ログ出力ロジック
End Try

End Function

  ’切断
Public Function DisConnect()
' エラー情報初期化ルーチン

Try
Adapter.Dispose()
Adapter = Nothing
Handle.Close()
Catch e As OleDbException
' ログ出力ロジック
End Try
' ハンドラを破棄
Handle.Dispose()
End Function
■No18787に返信(Yukiさんの記事)
> 繋がっているとか、繋がっていないは
> TryCatchのOleDbExceptionで確認しています。

State プロパティも見てあげてください。

> 以下が切断に用いているコードです。。何か不自然な点がありましたら、宜しく御願いします。

呼び出し元のソースも書いて頂かないと意味がないです。
返信が遅れて申し訳ないです。

じゃんぬねっと様
>State プロパティも見てあげてください。
Connectした際には、Stateプロパティは"Open"
DisConnectした際には、Stateプロパティは"Close"になっておりました。

尚、物理的にLAN線を抜いてOpen()した際は、Stateプロパティは"Open"になっております。

>元ソース
開示すると…少し事になりそうなので、サンプルを作りました。
すみません。。。。。。尚、接続がおかしいというのは、デバックモードで動かしたときにわかりました。

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'接続
Connect()

'SQL実行

'切断
DisConnect()


'接続(物理的にLAN線を抜く)
Connect()

'SQL実行

'切断
DisConnect()
End Sub


#のせていたソースが一部不具合がありましたので修正します
#(Handle → Handler)


' 接続文字列作成
Handler.ConnectionString = Handler.ConnectionString = "Provider=MSDAORA;User ID=TEST;Data Source=HOGE;Password=HOGEHOGE"

' エラー情報初期化ルーチン

Try
' 接続成功
Handler.Open()
Adapter = New OleDb.OleDbDataAdapter
Catch e As OleDb.OleDbException
' ログ出力ロジック
End Try

End Function

'切断
Public Function DisConnect()
' エラー情報初期化ルーチン

Try
Adapter.Dispose()
Adapter = Nothing
Handler.Close()
Catch e As OleDb.OleDbException
' ログ出力ロジック
End Try
' ハンドラを破棄
Handler.Dispose()
End Function

DOBON.NET | プログラミング道 | プログラミング掲示板