マスターテーブルアクセスクラス [VB.NET]

Visual Basic.NET ADO.NETデータベースプログラミング

MDB版:データベースアクセス

マスターテーブルアクセスクラスを実装します。

取得・挿入(追加)・削除・更新メソッド

実装するメソッドは次のとおりです。

  • レコードがマスターテーブルに存在するか否かを調べるメソッド
  • マスターテーブルから1レコードを取得するメソッド
  • マスターテーブルに1レコードを登録(挿入)するメソッド
  • マスターテーブルの1レコードを更新するメソッド
  • マスターテーブルから1レコードを削除するメソッド
Option Strict On       'プロジェクトのプロパティでも設定可能

Imports System.Data.OleDb
Imports System.Text.RegularExpressions

'////////// データベースアクセスクラス //////////
Public Class clsDBIO

    '--------------- 変数 ---------------
    ' 社員コード
    Private syainCode As String
    ' 更新日時
    Private kosinNitizi As Date

    '========================================================
    ' 機能:コンストラクタ
    ' 引数:社員コード
    '========================================================
    Public Sub New(ByVal syainCode As String)

        MyBase.New()
        Me.syainCode = syainCode

    End Sub

    '********************************************************
    ' 機能:レコードが社員テーブルに存在するか否かを調べる
    ' 引数:なし
    ' 戻値:True:存在する. False:存在しない
    '********************************************************
    Public Function ExistSyain() As Boolean

        Dim con As New OleDbConnection()
        Dim cmd As New OleDbCommand()

        ' DB接続文字列の設定
        con.ConnectionString = _
          "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & _
          Application.StartupPath & "\sample.mdb"

        ' コネクションの設定
        cmd.Connection = con

        ' DB接続を開く
        con.Open()

        ' SQL文の設定
        cmd.CommandText = "SELECT COUNT(*) FROM 社員テーブル "
        cmd.CommandText &= "WHERE 社員コード = @syainCode"

        ' SQL文パラメータの設定
        cmd.Parameters.Add("@syainCode", OleDbType.Char, 5)
        cmd.Parameters("@syainCode").Value = Me.syainCode

        ' 社員テーブルから該当社員コードのレコード数取得 
        Dim count As Integer
        count = CInt(cmd.ExecuteScalar())
        If count > 0 Then
            ' レコードが存在する時の処理
            Return True
        Else
            ' レコードが存在しない時の処理
            Return False
        End If

        ' DB接続を閉じる
        If Not con Is Nothing Then
            con.Close()
        End If

    End Function

    '********************************************************
    ' 機能:社員テーブルから1レコードを取得するメソッド
    ' 引数:Byref 社員レコード(DataTable型)
    ' 戻値:True:取得成功. False:取得レコードなし
    '********************************************************
    Public Function GetSyain( _
        ByRef syainRecord As DataTable) As Boolean

        Dim con As New OleDbConnection()
        Dim cmd As New OleDbCommand()
        Dim da As New OleDbDataAdapter()
        Dim ds As New DataSet()

        ' DB接続文字列の設定
        con.ConnectionString = _
          "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & _
          Application.StartupPath & "\sample.mdb"

        'コネクションの設定
        cmd.Connection = con

        ' DB接続を開く
        con.Open()

        ' SQL文の設定
        cmd.CommandText = "SELECT * FROM 社員テーブル "
        cmd.CommandText &= "WHERE 社員コード = @syainCode"

        ' SQL文パラメータの設定
        cmd.Parameters.Add("@syainCode", OleDbType.Char, 5)
        cmd.Parameters("@syainCode").Value = Me.syainCode

        ' 社員テーブルから該当社員IDのレコード読込 
        da.SelectCommand = cmd
        da.Fill(syainRecord)

        If syainRecord.Rows.Count > 0 Then
            ' レコードが取得できた時の処理
            ' 更新日時セット
            kosinNitizi = CDate(syainRecord.Rows(0).Item(5))
            ' 戻り値Trueをセットしてリターン
            Return True
        Else
            ' レコードが取得できなかった時の処理
            ' 戻り値Falseをセットしてリターン
            Return False
        End If

        ' DB接続を閉じる
        If Not con Is Nothing Then
            con.Close()
        End If

    End Function

    '********************************************************
    ' 機能:社員テーブルに1レコードを登録するメソッド
    ' 引数:clsSyainオブジェクト
    ' 戻値:True:登録成功. False:登録失敗
    '********************************************************
    Public Function InsertSyain _
        (ByVal syain As ClsSyain) As Boolean

        Dim con As New OleDbConnection()
        Dim cmd As New OleDbCommand()

        ' DB接続文字列の設定
        con.ConnectionString = _
          "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & _
          Application.StartupPath & "\sample.mdb"

        ' コネクションの設定
        cmd.Connection = con

        ' DB接続を開く
        con.Open()

        ' SQL文の設定
        cmd.CommandText = "INSERT INTO 社員テーブル"
        cmd.CommandText &= "(社員コード, 社員氏名, "
        cmd.CommandText &= "社員カナ, 更新日時) "
        cmd.CommandText &= "VALUES(@syainCode, @simei, "
        cmd.CommandText &= "@kana, @kosinNitizi)"

        ' パラメータの設定
        cmd.Parameters.Add("@syainCode", OleDbType.Char, 5)
        cmd.Parameters("@syainCode").Value = syain.SyainCode
        cmd.Parameters.Add("@simei", OleDbType.Char, 20)
        cmd.Parameters("@simei").Value = syain.SyainSimei
        cmd.Parameters.Add("@kana", OleDbType.Char, 40)
        cmd.Parameters("@kana").Value = syain.SyainKana
        cmd.Parameters.Add("@kosinNitizi", OleDbType.Date)
        cmd.Parameters("@kosinNitizi").Value = Now()

        ' キー値のレコード存在しなければテーブルに追加
        If Me.ExistSyain() = False Then
            ' 社員テーブル挿入処理実行
            cmd.ExecuteNonQuery()
            ' 正常リターン
            Return True
        Else
            ' エラーリターン
            Return False
        End If

        ' DB接続を閉じる
        If Not con Is Nothing Then
            con.Close()
        End If

    End Function

    '********************************************************
    ' 機能:社員テーブルの1レコードを更新するメソッド
    ' 引数:clsSyainオブジェクト
    ' 戻値:True:更新成功. False:更新失敗
    '********************************************************
    Public Function UpdateSyain _
        (ByVal syain As ClsSyain) As Boolean

        Dim con As New OleDbConnection()
        Dim cmd As New OleDbCommand()

        ' DB接続文字列の設定
        con.ConnectionString = _
          "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & _
          Application.StartupPath & "\sample.mdb"

        ' コネクションの設定
        cmd.Connection = con

        ' DB接続を開く
        con.Open()

        ' SQL文の設定
        cmd.CommandText = "UPDATE 社員テーブル "
        cmd.CommandText &= "SET 社員氏名=@syainSimei, "
        cmd.CommandText &= "社員カナ=@syainKana, "
        cmd.CommandText &= "更新日時=@newKosinNitizi "
        cmd.CommandText &= "WHERE 社員コード=@syainCode "
        cmd.CommandText &= "AND 更新日時=@kosinNitizi"

        ' SQL文パラメータの設定
        cmd.Parameters.Add("@simei", OleDbType.Char, 20)
        cmd.Parameters("@simei").Value = syain.SyainSimei
        cmd.Parameters.Add("@kana", OleDbType.Char, 40)
        cmd.Parameters("@kana").Value = syain.SyainKana
        cmd.Parameters.Add("@newKosinNitizi", OleDbType.Date)
        cmd.Parameters("@newKosinNitizi").Value = Now()
        cmd.Parameters.Add("@syainCode", OleDbType.Char, 5)
        cmd.Parameters("@syainCode").Value = Me.syainCode
        cmd.Parameters.Add("@kosinNitizi", OleDbType.Date)
        cmd.Parameters("@kosinNitizi").Value = Me.kosinNitizi

        ' 社員テーブル更新SQL文実行
        Dim count As Integer
        count = cmd.ExecuteNonQuery()
        If count > 0 Then
            ' 更新成功
            Return True
        Else
            ' 更新するレコードがなかった時の処理
            Return False
        End If

        ' DB接続を閉じる
        If Not con Is Nothing Then
            con.Close()
        End If

    End Function

    '********************************************************
    ' 機能:社員テーブルから1レコードを削除するメソッド
    ' 引数:なし
    ' 戻値:True:削除完了. False:削除レコードなし
    '********************************************************
    Public Function DeleteSyain() As Boolean

        Dim con As New OleDbConnection()
        Dim cmd As New OleDbCommand()

        ' DB接続文字列の設定
        con.ConnectionString = _
          "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & _
          Application.StartupPath & "\sample.mdb"

        ' コネクションの設定
        cmd.Connection = con

        ' DB接続を開く
        con.Open()

        ' SQL文の設定
        cmd.CommandText = "DELETE FROM 社員テーブル "
        cmd.CommandText &= "WHERE 社員コード=@syainCode "
        cmd.CommandText &= "AND 更新日時=@kosinNitizi"

        ' SQL文パラメータの設定
        cmd.Parameters.Add("@syainCode", OleDbType.Char, 5)
        cmd.Parameters("@syainCode").Value = Me.syainCode
        cmd.Parameters.Add("@kosinNitizi", OleDbType.Date)
        cmd.Parameters("@kosinNitizi").Value = Me.kosinNitizi

        ' 社員テーブル削除SQL文実行
        Dim count As Integer
        count = cmd.ExecuteNonQuery()
        If count > 0 Then
            ' レコードの削除が成功した時の処理
            Return True
        Else
            ' 削除するレコードがなかった時の処理
            Return False
        End If

        ' DB接続を閉じる
        If Not con Is Nothing Then
            con.Close()
        End If

    End Function

End Class