CommandTimeoutプロパティで実行時間の監視を行うためのサンプルコードについて説明します。
アプリケーションの手順
SymfowareConnectionオブジェクトでコネクションを接続します。詳細は、“A.2.1 接続および切断”を参照してください。
SymfowareCommandオブジェクトを生成します。(CommandTextプロパティへ問合せ式を設定します)
SymfowareCommand. CommandTimeoutプロパティでタイムアウトの時間を設定します。
SymfowareCommand.Connectionプロパティは、SymfowareConnectionオブジェクトを関連します。
SymfowareDataReaderオブジェクトよりデータを取得します。
タイムアウトが発生したかどうか判定します。
タイムアウト発生を通知します。
コネクションを切断します。
オブジェクトを破棄します。
エラー処理については、“A.2.8 エラー処理”を参照してください。
try
{
// SymfowareConnectionオブジェクトの生成
SymfowareConnection con = new SymfowareConnection("DATA SOURCE=127.0.0.1;PORT=26551;" +
"INITIAL CATALOG=TEST;USER ID=USER01;PASSWORD=PASS01");
SymfowareDataReader reader = null;
// 1. コネクション接続
con.Open();
// 2. SymfowareCommandオブジェクトの生成
SymfowareCommand com = 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.2.2 SymfowareDataReaderでの参照”を参照。
}
catch (SymfowareException ex)
{
// 6. タイムアウトが発生したかどうか判定する方法
if(string.Equals(ex.SQLState, "61000"))
{
// 7. タイムアウト発生を通知する
Console.WriteLine("検索結果の件数が多すぎるため、タイムアウトが発生しました");
}
else
{
throw ex
}
}
finally
{
// 8. コネクション切断
con.Close();
// 9. オブジェクトの破棄
com.Dispose();
con.Dispose();
}
}
// エラ-処理
catch (Exception e1)
{
// エラー処理ルーチンを記述
}