Windows アプリケーションでDBを更新してみよう(VS2005 TableAdapter 編)

Windows アプリケーションでDBのデータを表示しよう(VS2005 TableAdapter 編)をちょっと改造して
データの更新をしてみましょう。
※解説に用いた Visual Studio 2005 の Edition は、Team System Edition です。
サンプルのダウンロード

このカテゴリーの先頭へ このページの先頭へ

■Form 上のコントロールをいじる

Form1 をデザイナで開くと↓こんなんでしたよね。
もともとの Form1

今回は画面レイアウトは変更せず、[保存]っぽい画像ボタンがあるので、そいつを使おうと思います。
上の図の赤枠の部分をデザイナ上で、ダブルクリックして下さい。

このカテゴリーの先頭へ このページの先頭へ

■コードを入力

Form1.vb を見てみましょう。たったコレだけです。
■Form 上のコントロールをいじるで、保存ボタンをダブルクリックしたことによって、
生成されたイベントハンドラの中身のコードを、追記してみます。
※ TransactionScope を利用するには、System.Transactions を参照設定に入れる必要があります。
※ TransactionScope を利用したアプリケーションを Windows XP SP2 で実行した時、以下のメッセージが出ることがあります。
「分散トランザクション マネージャ (MSDTC) のネットワーク アクセスは無効になっています。 コンポーネント サービス管理ツールを使用して、MSDTC のセキュリティ構成でネットワーク アクセスの DTC を有効にしてください。」
回避方法はこちらです。
TransactionManagerCommunicationException using TransactionScope
  コントロールパネル → 管理ツール → コンポーネント サービスを開く。
  コンソール ルート → コンポーネント サービス → コンピュータ → マイ コンピュータを選択。
  その状態で、右クリックして、プロパティをクリック。
  マイ コンピュータ のプロパティ画面で、MSDTC タブを開く。
  MSDTC タブの [セキュリティの構成] ボタンを押下。
 
  [ネットワーク DTC アクセス]にチェック。
  クライアント及び管理の [リモート クライアントを許可する]と[リモート管理を許可する]にチェック。
  トランザクション マネージャ通信の [受信を許可する]と[送信を許可する]にチェック。
  その下のラジオボタンは、[認証を必要としない]を選択。
  [XA トランザクションを有効にする]をチェック。
  再起動せよ。と書いてあります。

また、このような KB もあります。
Windows Server 2003 または Windows XP Service Pack 2 のインストール後、リンク サーバーに対して分散トランザクションを実行すると SQL Server 2000 でエラー メッセージ 7391 が表示される

Form1.vb
Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'TODO: このコード行はデータを 'CustomersDataset.Customers' テーブルに読み込みます。必要に応じて移動、または削除をしてください。
        Me.CustomersTableAdapter.Fill(Me.CustomersDataset.Customers)

    End Sub

    Private Sub CustomersBindingNavigatorSaveItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CustomersBindingNavigatorSaveItem.Click
        Using tran As New System.Transactions.TransactionScope
            Me.CustomersTableAdapter.Update(Me.CustomersDataset.Customers)
            tran.Complete()
        End Using
    End Sub
End Class
このカテゴリーの先頭へ このページの先頭へ

■デバッグ実行!

コードの入力が終わったら、メニューバーの[デバッグ]→[デバッグ実行]をクリックしましょう。
実行結果
この状態で、SQL Server のデータをクエリアナライザで見てみます。
変更前 クエリアナライザ

次に、自分の作成したプログラムで 1 行目のデータを以下の様に編集します。
編集中
保存ボタンを押下した後、再びクエリアナライザで SQL Server のデータを見てみます。
変更後 クエリアナライザ
おっ。ちゃんと変わってますね。
確認できたら画面右上の×ボタンをクリックしてプログラムを終了させて下さい。

このカテゴリーの先頭へ このページの先頭へ