CommandTimeoutプロパティで実行時間の監視を行うためのサンプルコードについて説明します。
アプリケーションの手順
SymfowareConnectionオブジェクトでコネクションを接続します。詳細は、“A.3.1 接続および切断”を参照してください。
SymfowareCommandオブジェクトを生成します。(CommandTextプロパティへ問合せ式を設定します)
SymfowareCommand.CommandTimeoutプロパティでタイムアウトの時間を設定します。
SymfowareCommand.Connectionプロパティは、SymfowareConnectionオブジェクトを関連します。
SymfowareDataReaderオブジェクトよりデータを取得します。
タイムアウトが発生したかどうか判定します。
タイムアウト発生を通知します。
コネクションを切断します。
オブジェクトを破棄します。
エラー処理については、“A.3.8 エラー処理”を参照してください。
Try
'SymfowareConnectionオブジェクトの生成
Dim con As New SymfowareConnection("DATA SOURCE=127.0.0.1;PORT=26551;" _
"INITIAL CATALOG=TEST;USER ID=USER01;PASSWORD=PASS01")
Dim reader As SymfowareDataReader = Nothing
'1. コネクション接続
con.Open()
‘ 2. SymfowareCommandオブジェクトの生成
Dim com As New SymfowareCommand("SELECT * FROM SAMPLE1.TESTTBL", con)
'3. SymfowareCommandオブジェクトのCommandTimeoutプロパティを設定する
com.CommandTimeout = 10
‘ 4. SymfowareConnectionオブジェクトと関連
com.Connection = con
Try
‘ 5. SymfowareDataReaderオブジェクトよりデータを取得します。
reader = com.ExecuteReader()
‘ データを取得処理ルーチンを記述。“A.3.2 SymfowareDataReaderでの参照”を参照。
Catch ex As SymfowareException
‘ 6. タイムアウトが発生したかどうか判定する方法
If string.Equals(ex.SQLState, "61000") Then
‘ 7. タイムアウト発生を通知する
Console.WriteLine("検索結果の件数が多すぎるため、タイムアウトが発生しました")
Else
Throw ex
End If
Finally
‘ 8. コネクション切断
con.Close()
‘ 9. オブジェクトの破棄
com.Dispose()
con.Dispose()
End Try
}
‘ エラ-処理
Catch exception1 As Exception
‘ エラー処理ルーチンを記述
End Try