ストアドプロシジャを実行するサンプルコードについて説明します。
本サンプルコードは、ストアドプロシジャを実行し、結果をWebページ上に表示します。事前にフォームへラベルコントロール(Label1)を追加してください。
アプリケーションの手順
SymfowareConnectionオブジェクトでコネクションを接続します。詳細は、“A.3.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.3.8 エラー処理”を参照してください。
Try
'SymfowareConnectionオブジェクトの生成
Dim connection1 As New SymfowareConnection("DATA SOURCE=127.0.0.1;PORT=26551;" _
& "INITIAL CATALOG=TEST;USER ID=USER01;PASSWORD=PASS01")
'1.コネクション接続
connection1.Open()
'2.SymfowareCommandオブジェクトの生成
Dim command1 As New SymfowareCommand("CALL SAMPLE1.COUNTPRC(?,?,?,?)", connection1)
'3.SymfowareParameterオブジェクトの生成と設定
command1.Parameters.Add("DAT_P", SymfowareDbType.Date)
command1.Parameters.Item("DAT_P").Direction = ParameterDirection.Input
command1.Parameters.Item("DAT_P").Value = "2007/04/10"
command1.Parameters.Add("OUT_P", SymfowareDbType.Int)
command1.Parameters.Item("OUT_P").Direction = ParameterDirection.Output
command1.Parameters.Add("PRCSTATE", SymfowareDbType.Char)
command1.Parameters.Item("PRCSTATE").Direction = ParameterDirection.Output
command1.Parameters.Item("PRCSTATE").Size = 5
command1.Parameters.Add("PRCMSG", SymfowareDbType.Char)
command1.Parameters.Item("PRCMSG").Direction = ParameterDirection.Output
command1.Parameters.Item("PRCMSG").Size = 255
'4.CALL文実行
command1.ExecuteNonQuery()
'5.結果の表示
Dim text1 As String = ("COUNT: " & command1.Parameters.Item("OUT_P").Value & "<br>")
Dim obj1 As Object = text1
text1 = String.Concat(New Object() {obj1, "PRCSTATE: ", command1.Parameters.Item("PRCSTATE").Value, "<br>"})
text1 = (text1 & "PRCMSG: " & command1.Parameters.Item("PRCMSG").Value)
Me.Label1.Text = ("PROCEDURE DATA<br>" & text1)
'6.コネクション切断
connection1.Close()
'7.オブジェクトの破棄
connection1.Dispose()
command1.Dispose()
'エラー処理
Catch exception1 As Exception
'エラー処理ルーチンを記述
End Try