ページの先頭行へ戻る
Symfoware Server V11.1.0 アプリケーション開発ガイド(.NET Data Provider編)
FUJITSU Software

A.3.5 CommandBuilderを利用した更新

CommandBuilderを利用して更新を行うサンプルコードについて説明します。

本サンプルコードは、結果列がある場合は1行目を更新し、結果列がない場合は行を挿入します。行の更新処理または行の挿入処理を実行後、影響を受けた行数をWebページ上に表示します。事前にフォームへラベルコントロール(Label1)を追加してください。

アプリケーションの手順

  1. SymfowareConnectionオブジェクトを生成します。

  2. SymfowareDataAdapterオブジェクトを生成します。(SymfowareDataAdapterのSelectCommandのCommandTextプロパティへ問合せ式を設定します)

  3. DataSetオブジェクトを生成します。

  4. SymfowareDataAdapter.FillメソッドでデータをDataSetへ取得します。

  5. SymfowareCommandBuilderオブジェクトの生成

  6. データを更新します。
    SymfowareDataAdapter.Tables.Rows.Countメソッドを使用してDataSetに取り出した行数を取得します。
    行がある場合は1行目を更新対象行としてDataRowオブジェクトへ取り出します。
    行がない場合はDataSet.Tables.NewRowメソッドで新しい行を作成しDataRowオブジェクトへ取り出します。
    DataRow.BeginEditメソッドで更新モードにしてデータを更新します。
    DataRow.EndEditメソッドで更新を終了します。
    NewRowメソッドにより作成したDataRowオブジェクトをDataSet.Tables.Rows.Addメソッドで追加します。

  7. SymfowareDataAdapter.Updateメソッドで行の更新処理または行の挿入処理を実行します。

  8. DataSet.AcceptChangesメソッドでDataSetに対して行った更新内容をコミットします。

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

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

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

Try
    Dim row1 As DataRow
    '1.SymfowareConnectionオブジェクトの生成
    Dim connection1 As New SymfowareConnection("DATA SOURCE=127.0.0.1;PORT=26551;" _
& "INITIAL CATALOG=TEST;USER ID=USER01;PASSWORD=PASS01")
    '2.SymfowareDataAdapterオブジェクトの生成
    Dim adapter1 As New SymfowareDataAdapter("SELECT * FROM SAMPLE1.TESTTBL", connection1)
    '3.DataSetオブジェクトの生成
    Dim set1 As New DataSet
    '4.DataSet オブジェクトへデータを取得
    adapter1.Fill(set1, "TESTTBL")
    '5.SymfowareCommandBuilderオブジェクトの生成
    Dim builder1 As New SymfowareCommandBuilder(adapter1)
    '6.データの更新(DataSetに1行もデータがない場合は行を追加する)
    If (set1.Tables.Item("TESTTBL").Rows.Count <> 0) Then
        row1 = set1.Tables.Item("TESTTBL").Rows.Item(0)
    Else
        row1 = set1.Tables.Item("TESTTBL").NewRow
    End If
    row1.BeginEdit()
    row1.Item("KEY_C") = 2
    row1.Item("DEC_C") = 9999999.999
    row1.Item("DAT_C") = "2007/04/10"
    row1.Item("CHA_C") = "TEST DATA"
    row1.EndEdit()
    If (set1.Tables.Item("TESTTBL").Rows.Count = 0) Then
        set1.Tables.Item("TESTTBL").Rows.Add(row1)
    End If
    '7.行の更新処理または行の挿入処理の実行
    adapter1.Update(set1, "TESTTBL")
    '8.DataSet オブジェクトに対して行われたすべての更新をコミットする
    set1.AcceptChanges()
    'メッセージ表示
    Me.Label1.Text = "Normal End<br>データベースにデータが保存されました"
    '9.コネクション切断
    connection1.Close()
    '10.オブジェクトの破棄
    connection1.Dispose()
    set1.Dispose()
    adapter1.Dispose()
    'エラー処理
Catch exception1 As Exception
    'エラー処理ルーチンを記述
End Try