ストアドプロシジャを実行するサンプルコードについて説明します。
本サンプルコードは、ストアドプロシジャを実行し、結果をWebページ上に表示します。事前にフォームへラベルコントロール(Label1)を追加してください。
アプリケーションの手順
SymfowareConnectionオブジェクトでコネクションを接続します。詳細は、“A.2.1 接続および切断”を参照してください。
SymfowareCommandオブジェクトを生成します。(CommandTextプロパティへCALL文を設定します)
CommandTextプロパティへ設定したパラメタマーカ('?')に対応するSymfowareParameterオブジェクトの生成と設定をします。
SymfowareCommand.Parameters.AddメソッドでSymfowareParameterオブジェクトを生成します。SQL文中のパラメタマーカ('?')の出現順に生成してください。
SymfowareParameter.ParameterNameプロパティには、オブジェクト名を任意で設定します。
SymfowareParameter.Directionプロパティへ入力(Input)、出力(Output)、入出力(InputOutput)を設定します。
SymfowareParameter.Valueプロパティへパラメタの値を設定します。
文字列型の出力パラメタおよび入出力パラメタのSymfowareParameter.Sizeプロパティには、最大サイズをバイト数で設定します。
SymfowareCommand.ExecuteNonQueryメソッドでCALL文を実行します。
出力パラメタの結果をメッセージでWebページ上に表示します。
SymfowareParameter.Valueプロパティで結果が参照できます。
このサンプルコードでは、出力パラメタごとに改行し、表示します。
コネクションを切断します。
オブジェクトを破棄します。
エラー処理については、“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"); // 1. コネクション接続 con.Open(); // 2. SymfowareCommandオブジェクトの生成 SymfowareCommand com = new SymfowareCommand("CALL SAMPLE1.COUNTPRC(?,?,?,?)", con); // 3. SymfowareParameterオブジェクトの生成と設定 com.Parameters.Add("DAT_P", SymfowareDbType.Date); com.Parameters["DAT_P"].Direction = ParameterDirection.Input; com.Parameters["DAT_P"].Value = "2007/04/10"; com.Parameters.Add("OUT_P", SymfowareDbType.Int); com.Parameters["OUT_P"].Direction = ParameterDirection.Output; com.Parameters.Add("PRCSTATE", SymfowareDbType.Char); com.Parameters["PRCSTATE"].Direction = ParameterDirection.Output; com.Parameters["PRCSTATE"].Size = 5; com.Parameters.Add("PRCMSG",SymfowareDbType.Char); com.Parameters["PRCMSG"].Direction = ParameterDirection.Output; com.Parameters["PRCMSG"].Size = 255; //4. CALL文実行 com.ExecuteNonQuery(); // 5. 結果の表示 string msgstr = "COUNT: " + com.Parameters["OUT_P"].Value + "<br>"; msgstr += "PRCSTATE: " + com.Parameters["PRCSTATE"].Value + "<br>"; msgstr += "PRCMSG: " + com.Parameters["PRCMSG"].Value; Label1.Text = "PROCEDURE DATA<br>" + msgstr; // 6. コネクション切断 con.Close(); // 7. オブジェクトの破棄 con.Dispose(); com.Dispose(); } // エラー処理 catch (Exception e1) { // エラー処理ルーチンを記述 }