ページの先頭行へ戻る
Symfoware Server V12.7.0 アプリケーション開発ガイド(ODBCドライバ編)
FUJITSU Software

C.2.5 パラメタマーカを使用したSQL文での更新

パラメタマーカ('?')を使用したSQL文でのデータ更新を行うサンプルコードについて説明します。

本サンプルコードは、UPDATE文実行後、影響を受けた行数をWebページ上に表示します。

アプリケーションの手順

  1. コネクションを接続します。詳細は、“C.2.1 接続および切断”を参照してください。

  2. Commandオブジェクトを生成します。
    Command.ActiveConnectionプロパティに手順1で生成したConnectionオブジェクトを設定します。
    Command.CommandTextプロパティにUPDATE文を設定します。
    Command.CommandTypeプロパティにCommandTypeEnum.adCmdTextを設定します。

  3. Parameterオブジェクトの生成と設定をします。
    Parameter.Nameプロパティには、オブジェクト名前を任意で設定します。
    Parameter.Typeプロパティには、データ型を設定します。
    Parameter.Directionプロパティには、パラメタが入力パラメタ(adParamInput)であることを設定します。
    文字列型のParameter.Sizeプロパティには、データの最大サイズをバイト数で設定します。
    Parameter.Valueプロパティには、値を設定します。
    Parameter.Precisionプロパティには、精度を設定します。
    Parameter.NumericScaleプロパティには、値の小数点以下の桁数を設定します。

  4. ParametersコレクションにParameterオブジェクトを追加します。SQL文中のパラメタマーカ('?')の出現順に追加してください。

  5. Command.ExecuteメソッドでUPDATE文を実行します。
    引数RecordsAffectedを指定しExecuteメソッドで影響を受けた行数を取得します。

  6. コネクションを切断します。

  7. オブジェクトを破棄します。

エラー処理については、“C.2.9 エラー処理”を参照してください。

Public Class _Default
    Inherits Page

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load

        'オブジェクト宣言
        Dim Con As ADODB.Connection
        Dim Com As ADODB.Command
        Dim Par1, Par2, Par3, Par4 As ADODB.Parameter

        Dim ra As Long

        'Connectionオブジェクトの生成
        Con = New ADODB.Connection
        Con.ConnectionString = "DSN=DSN01;UID=USER01;PWD=PASS01;"

        On Error GoTo ErrorProc

        '1. コネクション接続
        Con.Open()

        '2. Commandオブジェクトの生成と設定
        Com = New ADODB.Command
        Com.ActiveConnection = Con
        Com.CommandText = "UPDATE TESTTBL SET DEC_C=?,DAT_C=?,CHA_C=? WHERE KEY_C=?"
        Com.CommandType = ADODB.CommandTypeEnum.adCmdText

        '3. Parameterオブジェクトの生成と設定
        Par1 = Com.CreateParameter("DEC_C", ADODB.DataTypeEnum.adDecimal, 
         ADODB.ParameterDirectionEnum.adParamInput, , 2000.222)
        Par1.Precision = 10
        Par1.NumericScale = 3
        Par2 = Com.CreateParameter("DAT_C", ADODB.DataTypeEnum.adDate, 
         ADODB.ParameterDirectionEnum.adParamInput, , "2018-08-07")
        Par3 = Com.CreateParameter("CHA_C", ADODB.DataTypeEnum.adChar, 
         ADODB.ParameterDirectionEnum.adParamInput, 250, "UPDATE DATA3")
        Par4 = Com.CreateParameter("KEY_C", ADODB.DataTypeEnum.adInteger, 
         ADODB.ParameterDirectionEnum.adParamInput, , 100)

        '4. ParametersコレクションにParameterオブジェクトを追加
        Com.Parameters.Append(Par1)
        Com.Parameters.Append(Par2)
        Com.Parameters.Append(Par3)
        Com.Parameters.Append(Par4)

        '5. UPDATE文実行
        Com.Execute(ra)

        'メッセージボックスの表示
        Label1.Text = "Normal End<br>" & ra & "行更新されました"

        '6. コネクション切断
        Con.Close()

        '7. オブジェクトの破棄
        Par1 = Nothing
        Par2 = Nothing
        Par3 = Nothing
        Par4 = Nothing
        Com = Nothing
        Con = Nothing

        Exit Sub

        'エラー処理
ErrorProc:

        'エラー処理ルーチンを記述
        Label1.Text = "No Connect<br>▲▼  COMMUNICATION OFF LINE  ▲▼"

    End Sub
End Class