DBアクセス基本クラス [VB Express]

Visual Basic ADO.NET [Community Express]

レコード検索クラスメンバー

DBアクセス基本クラスに、レコード検索に必要なメンバーを実装します。

DBアクセス基本クラス サンプルプログラム

クラス図

レコード検索に必要なメンバーなDBアクセス基本クラスのメンバーは次のようになります。

  • 【レコード取得メソッド】テーブルアクセス処理を行い、主キー値、テーブル名、キー列名を引数として受け取る
  • 【接続関連プロパティ設定 】DBをオープンするための設定。

App.config ファイル connectionString の name属性の既定値は長すぎるので、"販売管理ConString"に変更しました。

注意:レコード検索に必要なメンバーのみを実装します。

Option Strict On
Imports System.Data.SqlClient
Imports System.Configuration  '[参照の追加]から追加

'////////// 基本クラス:販売管理DBアクセスクラス //////////
Public MustInherit Class ClsHankanDBIO

  '====================================================================
  ' 機能:コンストラクタ
  ' 引数:なし
  '====================================================================
  Public Sub New()

      MyBase.New()

  End Sub

  '********************************************************************
  ' 機能:引数に指定したテーブルのキー値のレコードを取得する
  ' 引数:テーブル名
  ' 引数:キー列名
  ' 引数:主キー値
  ' 戻値:取得したレコード
  ' 補足:テーブル名の主キー列はNChar型とする
  '******1*********2*********3*********4*********5**********6*********7
  Public Function GetKeyData(TableName As String, _
                             KeyField As String, _
                             KeyValue As String) _
                             As DataTable

      Dim retDt As New DataTable    'リターン値

      '---<< テーブルからレコード取得 >>---
      Using con As New SqlConnection
          Using cmd As New SqlCommand
              ' 接続関連プロパティ設定
              Me.SetConnection(con, cmd)

              ' SQL文設定
              cmd.CommandText = "SELECT * FROM " & TableName & _
                  " WHERE " & KeyField & " = @KeyValue"

              ' SQL文の引数設定
              cmd.Parameters.Clear()
              ' パラメータの実際のサイズからデータ長を推論
              cmd.Parameters.Add("@KeyValue", SqlDbType.NChar)
              ' コマンド引数に値を設定
              cmd.Parameters("@KeyValue").Value = KeyValue

              ' レコード取得
              Dim da As New SqlDataAdapter
              da.SelectCommand = cmd
              da.Fill(retDt)

          End Using
      End Using

      ' ◆戻値を設定してリターン
      Return retDt

  End Function

  '********************************************************************
  ' 機能:接続関連プロパティ設定
  ' 引数:参照 SqlConnectionオブジェクト
  ' 引数:参照 SqlCommandオブジェクト
  ' 戻値:なし
  '******1*********2*********3*********4*********5**********6*********7
  Public Sub SetConnection(ByRef con As SqlConnection, ByRef cmd As SqlCommand)

      Dim settings As ConnectionStringSettings

      ' 接続文字列をApp.configファイルから取得
      settings = ConfigurationManager.ConnectionStrings("販売管理ConString")

      If settings Is Nothing Then
          ' 接続文字列取得エラー
          Throw New Exception("App.configに未登録")
      Else
          ' 接続文字列の設定
          con.ConnectionString = settings.ConnectionString
          ' SqlCommand.Connectionプロパティの設定
          cmd.Connection = con
      End If

  End Sub

End Class