レコード追加基本クラスの実装
DBアクセス基本クラスに、レコード追加に必要なメンバーを実装します。
サンプルプログラム
社員マスターのレコード追加に必要なDBアクセス基本クラスのメンバーを実装します。
- コンストラクタ
- キー値のレコード存在をチェックするメソッド
- 引数に指定したテーブルのキー値のレコードを取得するメソッド
- 行データ生成メソッド(社員マスター1レコードに対応)
- 接続関連プロパティ設定メソッド
Key | 列名 | データ型 | NULLを許容 |
---|---|---|---|
● | 社員コード | nchar(5) | しない |
社員氏名 | nvarchar(20) | しない | |
社員カナ | nvarchar(40) | しない | |
部署コード | nchar(4) | しない | |
更新日時 | datetime | しない |
Option Strict On Imports System.Configuration ' [参照の追加]から追加 Imports System.Data.SqlClient Imports System.Transactions ' [参照の追加]から追加 '++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ' インターフェイス定義 '++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Public Interface IDBIO Function InsertRecord(ByVal shain As ClsInsertShain) As Integer End Interface '////////// 基本クラス:sampleDBアクセスクラス ////////// Public MustInherit Class ClsSampleDBIO '========================================================== ' 機能:コンストラクタ ' 引数:なし '========================================================== Public Sub New() MyBase.New() End Sub '********************************************************** ' 機能:テーブルキー値のレコードの有無を調べるメソッド ' 引数:テーブル名 ' 引数:キーフィールド名 ' 引数:主キー値 ' 戻値:レコードあり-->True、レコードなし-->False ' 補足:主キーフィールドはNChar型とする '******1*********2*********3*********4*********5**********6 Public Function ExistKeyData(ByVal tableName As String, _ ByVal keyField As String, _ ByVal keyCode As String) _ As Boolean Dim retExist As Boolean ' リターン値 Using con As New SqlConnection Using cmd As New SqlCommand ' 接続関連プロパティ設定 Me.SetConnection(con, cmd) ' SQL文設定 cmd.CommandText = "SELECT COUNT(*) FROM " & _ tableName & _ " WHERE " & keyField & " = @KeyCode" ' SQL文の引数設定 cmd.Parameters.Clear() ' パラメータの実際のサイズからデータ長を推論 cmd.Parameters.Add("@KeyCode", SqlDbType.NChar) ' コマンド引数に値を設定 cmd.Parameters("@KeyCode").Value = keyCode ' DB接続を開く con.Open() ' レコード件数取得 Dim count As Integer = CInt(cmd.ExecuteScalar()) If count = 1 Then ' レコードが1件あれば、Trueを返す retExist = True Else ' そうでなければ、Falseを返す retExist = False End If End Using End Using ' ◆戻値を設定してリターン Return retExist End Function '********************************************************** ' 機能:引数に指定したテーブルのキー値のレコードを取得する ' 引数:テーブル名 ' 引数:キーフィールド名 ' 引数:主キー値 ' 戻値:取得したレコード ' 補足:テーブル名の主キーフィールドはNChar型とする '******1*********2*********3*********4*********5**********6 Public Function GetKeyData(ByVal tableName As String, _ ByVal keyField As String, _ ByVal keyCode 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 & " = @keyCode" ' SQL文の引数設定 cmd.Parameters.Clear() ' パラメータの実際のサイズからデータ長を推論 cmd.Parameters.Add("@keyCode", SqlDbType.NChar) ' コマンド引数に値を設定 cmd.Parameters("@KeyCode").Value = keyCode ' レコード取得 Dim da As New SqlDataAdapter da.SelectCommand = cmd da.Fill(retDt) End Using End Using ' ◆戻値を設定してリターン Return retDt End Function '********************************************************** ' 機能:社員テーブルの行データ生成 ' 引数:テーブル名 ' 引数:キーフィールド名 ' 戻値:生成した行データ '******1*********2*********3*********4*********5**********6 Public Function CreateDataRow(ByVal tableName As String, _ ByVal keyField As String) _ As DataRow Dim retRow As DataRow ' リターン値 Dim dt As New DataTable ' 列情報を取込むために、レコードを取得するが ' 取得できなくてもよいので、第三引数のキー値は何でも良い dt = Me.GetKeyData(tableName, keyField, "_") retRow = dt.NewRow Return retRow End Function '********************************************************** ' 機能:接続関連プロパティ設定 ' 引数:参照 SqlConnectionオブジェクト ' 引数:参照 SqlCommandオブジェクト ' 戻値:なし '******1*********2*********3*********4*********5**********6 Public Sub SetConnection(ByRef con As SqlConnection, _ ByRef cmd As SqlCommand) Dim settings As ConnectionStringSettings ' 接続文字列をapp.configファイルから取得 settings = _ ConfigurationManager.ConnectionStrings _ ("AdoNet.My.MySettings.sampleDBConStr") 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