同人誌PDF版 販売中!!

スポンサー

.NET 自作クラスでAccessにSQLする

皆さんこんにちは!こんばんは!!ロト君です。今回は、VS2022で自作Appを作成している備忘録を記載したいと思います。

自作クラス

私が自作してるクラスは下記のモノです。

  • frmより変数でクラスを制御する
  • SQLのSelect,Insert,Updateを行える
  • エラー処理も出来る

上記の3要素を行えるモノを今回作成しました。

実際のコード

実際のコードは下記のモノです。

Imports System.Data.OleDb

Public Class Connection_DB

    Public Property Sqls = New System.Text.StringBuilder
    Public Property resultDt As New DataTable
    Public Property Connection_Name As String

    Sub New()

        Connection_Name = DB_connect

    End Sub

    Public Sub Selecter()

        'Access接続準備
        Dim command As New OleDbCommand
        Dim da As New OleDbDataAdapter
        Dim cnAccess As OleDbConnection = New OleDbConnection
        cnAccess.ConnectionString = Connection_Name

        'Access接続開始
        cnAccess.Open()

        Try

            command.Connection = cnAccess
            command.CommandText = Sqls.ToString
            da.SelectCommand = command

            'SQL実行 結果をデータテーブルに格納
            da.Fill(resultDt)


        Catch ex As Exception
            Throw
        Finally
            command.Dispose()
            da.Dispose()
            cnAccess.Close()
        End Try

    End Sub

    Public Sub Updater()

        'Access接続準備
        Dim command As New OleDbCommand
        Dim da As New OleDbDataAdapter
        Dim cnAccess As OleDbConnection = New OleDbConnection
        cnAccess.ConnectionString = Connection_Name

        'Access接続開始
        cnAccess.Open()

        Dim tran As OleDbTransaction
        tran = cnAccess.BeginTransaction

        Try

            command.Connection = cnAccess
            command.Transaction = tran

            command.CommandText = Sqls.ToString
            command.ExecuteNonQuery()

            tran.Commit()

        Catch ex As Exception
            tran.Rollback()
            Throw
        Finally
            command.Dispose()
            cnAccess.Close()
        End Try

    End Sub

End Class

上記のクラス名は、Connection_DB.vbとしています。

解説

それでは、解説です!

Imports System.Data.OleDb

は、データを扱える様にするモノです。

クラス外の.vb中で読み込んでおきます。

Public Class Connection_DB

~ 処理 ~

End Class

クラス名Connection_DBです。処理に内容を記載します。

Public Property Sqls = New System.Text.StringBuilder
Public Property resultDt As New DataTable
Public Property Connection_Name As String

それぞれのプロパティを定義します。

Sqlsは、System.Text.StringBuilerを引き継いでます。

resultDtは、DataTableを引き継いでます。

Connection_Nameは、Stringを引き継いでます。

Sub New()

     Connection_Name = DB_connect

End Sub

Sub New()で、frm中の変数定義でNewする際に読み込ませたい内容を記載します。殆どの場合、初期化の内容を記載します。

    Public Sub Selecter()

        'Access接続準備
        Dim command As New OleDbCommand
        Dim da As New OleDbDataAdapter
        Dim cnAccess As OleDbConnection = New OleDbConnection
        cnAccess.ConnectionString = Connection_Name

        'Access接続開始
        cnAccess.Open()

        Try

            command.Connection = cnAccess
            command.CommandText = Sqls.ToString
            da.SelectCommand = command

            'SQL実行 結果をデータテーブルに格納
            da.Fill(resultDt)


        Catch ex As Exception
            Throw
        Finally
            command.Dispose()
            da.Dispose()
            cnAccess.Close()
        End Try

    End Sub

Selecterで、SQLのSelect文を読ませます。

    Public Sub Updater()

        'Access接続準備
        Dim command As New OleDbCommand
        Dim da As New OleDbDataAdapter
        Dim cnAccess As OleDbConnection = New OleDbConnection
        cnAccess.ConnectionString = Connection_Name

        'Access接続開始
        cnAccess.Open()

        Dim tran As OleDbTransaction
        tran = cnAccess.BeginTransaction

        Try

            command.Connection = cnAccess
            command.Transaction = tran

            command.CommandText = Sqls.ToString
            command.ExecuteNonQuery()

            tran.Commit()

        Catch ex As Exception
            tran.Rollback()
            Throw
        Finally
            command.Dispose()
            cnAccess.Close()
        End Try

    End Sub

Updaterで、Insert,Update文を読ませます。

SelecterはSelect文のみ。UpdaterはInsert,Updateのみを読み込ませます。
各、メソッドはエラー処理を行う様にしています。

使用例

実際に使う際は下記の様に記述します。

Dim db As New Connection_DB

db.Sqls.AppendLine = "~ SQL文 ~"
db.Sqls.AppendLine = "~ SQL文 ~"
db.Sqls.AppendLine = "~ SQL文 ~"

db.Selecter()

if db.resultDt.Rows.Count = 0 then
     MessageBox.Show("Nothing", "Err")
     Exit Sub
endif

変数dbにクラスを定義して各プロパティを指定しています。今回は、Selecterメソッドを使っています。

db.resultDtに格納されたデータの行数をカウントして0個だった場合はNothingを表示してExitしています。

まとめ

色々な場面で使い回しを行いたい場合はクラス化しておくと非常に便利ですね!

今回は、Accessのデータを基に扱う場合のモノでした!何か参考になればと、思います!!

では、今回はここまで!(*’ω’*)ノシ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA