皆さんこんにちは!こんばんは!!ロト君です。今回は、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のデータを基に扱う場合のモノでした!何か参考になればと、思います!!
では、今回はここまで!(*’ω’*)ノシ
コメントを残す