関連記事

  1. DataGridViewへAccessのデータベースファイルを読み込む
  2. AccessDBテーブルの主キー情報を取得する
  3. DataGridViewに読み込んだDB情報を再取得する
  4. DataGridViewをセル編集したときの行数を格納する
  5. Accessのデータベースファイルへ書き込むための接続・切断 ←NOW!
  6. Accessデータベースのレコードを削除する
  7. Accessデータベースを更新する

ガッツリ続き物になってしまいました…。過去の分と合わせて順番に読んでいただけると分かりやすいかと思います。

なるべく簡素に書いているので、例外処理は甘いと思われます。ご参考にする際は、ご自分の環境に合わせてご修正ください。

解説のためツギハギしちゃったので、最後の記事(7回め)に全コードまとめてあります。

環境

  • Visual Studio 2010
  • .NET Framework 4.0

です。

汎用プロシージャを作る

今回は、任意の SQL 文を引数として持っていって、コネクション開く → トランザクション開始 → 実行 → 確定処理 → コネクション閉じる、という流れを実装したrunSQLというプロシージャを作ります。

トランザクションって?? という方は、前にこちらで書いたことがあるのでご参照ください。言語はちょっと違いますが概念は同じです。

引数が文字列型(1つのSQL文)の場合

まず、単一のSQL文を引数にして持っていく処理。

Form2.vb

とりあえず、削除ボタン(Button3)クリック、22~34行目のプロシージャから走るようにしてみます。

25行目で任意のSQL文を変数に入れて、それを引数にしてrunSQLを実行します。関数にする予定なので、True が返ってきたら(成功したら)、再読込してメッセージを出します。

ここでは例として DELETE 文を書いていますが、もちろん INSERT でも UPDATE でもいけます。

DBtable.vb

汎用で使うためのrunSQLプロシージャを、DBtable.vb クラスの方に作ります。25~50行目です。

29行目のコネクションは、テーブルを読み込む時点でもう出来ているので、それをそのまま使います。引数としてもってきたSQLを文を実行して、成功だったらフラグを立てて、失敗だったらエラーメッセージを出してロールバック。

引数がリスト型(複数のSQL文リスト)の場合

今回の例では、UPDATE や INSERT の行数をリストで保持しておいて、複数のSQL文を生成して一度に処理したい、という構想なので、上記のコードのrunSQLメソッドへ渡す引数を、単一のSQL文ではなく、複数のSQL文がリスト形式になっているものとします。

Form2.vb

引数が String から List になっただけです。

SQL文をリスト化して、31行目でrunSQLに引き渡します。

Form2.vb

25行目の受け取る引数を List 型にしておいて、

37~40行でリスト内をループさせて、全部OKだったらコミットします。途中でエラーが起きたらロールバック。

今回はここまで。次回からようやく DB を書き換えていきますー!

書籍を執筆しています。

  • このエントリーをはてなブックマークに追加
  • follow us in feedly 652
  • RSSを登録

公開日:2015/03/02


コメントを残す




*印は必須項目です。コメントは承認制ですので、反映までしばらくお待ち下さい。(稀にですがスパムの誤判定にて届かないこともあるようですので、必要な際はお問い合わせからお願い致します。)


back to top