連載:実践で役立つ業務アプリ開発のヒント

第1回 データベースとADO.NETの機能を適切に活用する

えムナウ(児玉宏之)
Microsoft MVP Visual Developer - Visual C# JAN 2005 - DEC 2007)
2007/06/08
Page1 Page2 Page3

開発ヒント3:テーブルアダプタでのメソッドの作成

 ここまでの作業で[TableAdapter構成ウィザード]により自動作成された、「ユーザーDataSet」に固有な「ユーザーDataTable」や「ユーザーRow」などのクラスは、「DataTable」や「DataRow」といった汎用的なクラス(=基本クラス)にラップすると、次回で解説するユーザー・インターフェイスとのパラメータ受け渡しに便利だ。そこでここではそのような汎用ラップ・メソッドを作成しておこう。

 まず、作成したデータセットの「ユーザーDataSet.xsd」ファイルを[ソリューション エクスプローラ]で右クリックして[コードの表示]を実行する。これにより「ユーザーDataSet.vb」ファイルが作成され、コード・エディタで開かれるので、以下のコードに書き換える。

Option Strict On

Partial Class ユーザーDataSet

  Public Class ユーザーDataTableKeys
    Inherits DataTableKeys

    Public ID As Integer
    Public Sub New(ByVal ID As Integer)
      Me.ID = ID
    End Sub

  End Class

  Public Class ユーザーSearchConditions
    Inherits SearchConditions

    PublicAs String
    PublicAs String
    Public ユーザー名 As String
    Public Sub New(ByValAs String, _
                   ByValAs String, _
                   ByVal ユーザー名 As String)
      Me.姓 = 姓
      Me.名 = 名
      Me.ユーザー名 = ユーザー名
    End Sub

  End Class
End Class

Namespace ユーザーDataSetTableAdapters
  Partial Public Class ユーザーTableAdapter

    Public Sub
FillTable(ByVal table As DataTable)
      Me.Fill(CType(table, ユーザーDataSet.ユーザーDataTable))
    End Sub

    Public Sub UpdateTable(ByVal table As DataTable)
      Me.Update(CType(table, ユーザーDataSet.ユーザーDataTable))
    End Sub

    Public Sub FillTableByKeys(ByVal table As DataTable, ByVal keys As DataTableKeys)
      Me.FillByKeys( _
        CType(table, ユーザーDataSet.ユーザーDataTable), _
        CType(keys, ユーザーDataSet.ユーザーDataTableKeys).ID)
    End Sub

    Public Function GetKeys(ByVal row As DataRow) As DataTableKeys
      Return New ユーザーDataSet.ユーザーDataTableKeys( _
        CType(row, ユーザーDataSet.ユーザーRow).ID)
    End Function

    Public Sub FillTableBySearchConditions(ByVal table As DataTable, ByVal condition As SearchConditions)

      Dim 検索条件 As ユーザーDataSet.ユーザーSearchConditions = _
        CType(condition, ユーザーDataSet.ユーザーSearchConditions)

      Me.FillBySearchConditions( _
        CType(table, ユーザーDataSet.ユーザーDataTable), _
        検索条件.姓, 検索条件.名, 検索条件.ユーザー名)
    End Sub

  End Class
End Namespace
ユーザーDataSet.vbファイルに書き込むコード内容

 上記コードにはDataTableKeysクラスとSearchConditionsクラスが使われているが、これらのクラスはここで独自に追加したものだ(取りあえず空のDataTableKeysクラスとSearchConditionsクラスを定義しておけばよい)。

 おのおののメソッドは、先ほど説明したように、汎用ラップ・メソッド(=「ユーザーDataSet」に固有のクラスを汎用クラスにラップするためのメソッド)である。

 [TableAdapter 構成ウィザード]で作成したメソッドと、今回作成した汎用ラップ・メソッドを一覧で以下に示す。

[TableAdapter 構成ウィザード]で作成されたメソッド 汎用ラップ・メソッド
Fill(ByVal dataTable As ユーザーDataSet.ユーザーDataTable) As Integer FillTable(ByVal table As DataTable)
Update(ByVal dataTable As ユーザーDataSet.ユーザーDataTable) As Integer UpdateTable(ByVal table As DataTable)
FillByKeys(ByVal dataTable As ユーザーDataSet.ユーザーDataTable, ByVal ID As System.Nullable(Of Integer)) As Integer FillTableByKeys(ByVal table As DataTable, ByVal keys As DataTableKeys)
FillBySearchConditions(ByVal dataTable As ユーザーDataSet.ユーザーDataTable, ByValAs String, ByValAs String, ByVal ユーザー名 As String) As Integer FillTableBySearchConditions(ByVal table As DataTable, ByVal condition As SearchConditions)
[TableAdapter 構成ウィザード]で作成されたメソッドと汎用ラップ・メソッドの対比

 今回はデータベース処理関連を開発する際に役立つ実践的な手法について説明した。次回は、ユーザー・インターフェイス周りを効率的に開発する手法を紹介する。End of Article


 INDEX
  実践で役立つ業務アプリ開発のヒント
  第1回 データベースとADO.NETの機能を適切に活用する
    1.開発ヒント1:画面や印刷イメージに合致するビューの作成
    2.開発ヒント2:ストアド・プロシージャの作成
  3.開発ヒント3:テーブルアダプタでのメソッドの作成

インデックス・ページヘ  「実践で役立つ業務アプリ開発のヒント」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)
- PR -

注目のテーマ

業務アプリInsider 記事ランキング

本日 月間
ソリューションFLASH