- データベースへのコネクションの管理
- SQL文の実行
- 結果(スカラー値、結果セット)の取得
- トランザクションの管理
- SQL実行時に例外が発生したときにその例外を取得
.NetFrameworkにあるADO.NETの機能を使って、VisualStudioの[データ(A)]の[新しいデータソースの追加(N)]を選択するとウィザード形式で簡単にデータを取ってこれるようになりました。
簡単には違いないのですが、ちょっととっつきにくかったので専用のクラスを作成することにしました。
いろいろ工夫をしてMSAccessからSQLServerへのアップサイズを行った際にも、最小限の変更で対応できるようになりました。
こんな感じで使います。
- スカラー値の取得
Dim db As New database.MSAccess.DBAccess
Dim SQLCommand As OleDb.OleDbCommand
Dim 管理No As Decimal
SQLCommand = New System.Data.OleDb.OleDbCommand("SELECT 伝票番号 FROM 採番 WHERE (伝票 = @伝票);")
SQLCommand.Parameters.Add("@伝票", OleDb.OleDbType.Char)
SQLCommand.Parameters("@伝票").Value = "出荷伝票"
Dim Result As Object = db.getScalar(SQLCommand)
If IsNothing(Result) Then
Dim ex As Exception = db.SQLException
MsgBox("エラーが発生しました" & vbNewLine & ex.Message, MsgBoxStyle.Information, "")
Exit Sub
End If
管理No = Decimal.Parse(Result) + 1
- 結果セットの取得
Dim sbSqlCommand As New System.Text.StringBuilder("")
sbSqlCommand.Append("SELECT コード, 会社名, フリガナ, 部署担当, 郵便番号, 住所1, 住所2, TEL, EMail")
sbSqlCommand.Append(" FROM 住所マスター")
sbSqlCommand.Append(" WHERE ID = @ID;")
Dim db As New database.MSAccess.DBAccess
Dim SqlCommand As New System.Data.OleDb.OleDbCommand
SqlCommand.CommandText = sbSqlCommand.ToString
SqlCommand.Parameters.Add("@ID", OleDb.OleDbType.Integer)
SqlCommand.Parameters("@ID").Value = ID
Dim dt住所マスター As DataTable = db.getDataTable(SqlCommand)
If IsNothing(dt住所マスター) Then
Dim ex As Exception = db.SQLException
MsgBox("住所マスターの取り出しに失敗しました。" & vbNewLine & ex.Message, MsgBoxStyle.Critical, "Form住所マスタ管理/FormFill")
Exit Sub
End If