販売管理データベースアクセスクラス
Visual Studio Express 2012 for Web を使って、マスターファイルメンテナンスのWebアプリケーションを開発します。
今回は、得意先マスター照会フォームで利用する販売管理データベースアクセスクラスを実装します。今後必要に応じてメンバーを追加していきます。
key | 列 名 | データ型 | nullを許容 |
---|---|---|---|
○ | 得意先コード | nchar(4) | しない |
郵便番号 | nchar(7) | しない | |
得意先名称 | nvarchar(40) | しない | |
得意先住所 | nvarchar(50) | しない |
データベース接続文字列
接続文字列については、接続文字列のページを参考にして、作成してください。作成する接続文字列名は、長いですがわかりやすくするために、販売管理DBConnectionString」にします。
データベースオープン共有メソッド
共有メソッドは、インスタンスを生成せずに、クラス名.メソッド名で呼び出します。宣言時にSharedキーワードを付加します。
コンストラクタと、テーブルから1レコードを取得するメソッドを実装します。
販売管理DB:得意先マスター表
マスターファイル保守は、下の「販売管理DB」の得意先マスター表を使います。
得意先テーブルアクセスクラス
◆得意先テーブルアクセスクラスは、販売管理データベースアクセスクラスの派生クラスとして、次のメンバーを実装します。
- コンストラクタ
- 得意先マスター表へ1レコード追加するメソッド
- 得意先マスター表の1レコードを更新するメソッド
- 得意先マスター表を削除するメソッド
得意先マスターでは、コンストラクタしか使いません。他のメソッドは、追加・更新・削除で使います。
Option Strict On Imports Microsoft.VisualBasic ' クラスを追加すると自動的に追加される Imports System.Data.SqlClient Imports System.Transactions '参照の追加 System.Transactions Imports System.Data ' 【追加】 '/////////// 販売管理データベースアクセスクラス //////////// Public MustInherit Class ClsHanbaiKanriDBIO '******************************************************* ' 機能:DBを開く共有メソッド ' 引数:SqlConnectionオブジェクト ' 引数:SqlCommandオブジェクト ' 戻値:なし '******************************************************* Protected Shared Sub OpenDB(ByRef con As SqlConnection, ByRef cmd As SqlCommand) Try ' 変数の宣言 Dim settings As ConnectionStringSettings ' 接続文字列をapp.configファイルから取得 settings = ConfigurationManager.ConnectionStrings _ ("販売管理DBConnectionString") If settings Is Nothing Then ' 接続文字列取得エラー Throw New DBIOException _ ("接続文字列がapp.configに未登録.") Else ' 接続文字列の設定 con.ConnectionString = settings.ConnectionString ' SqlCommand.Connectionプロパティの設定 cmd.Connection = con ' DBを開く con.Open() End If Catch ex As DBIOException ' DBIO例外が発生した時の処理 Throw New DBIOException(ex.Message) Catch ex As Exception ' その他例外が発生した時の処理 Throw New Exception(ex.ToString) End Try End Sub '--------------------< 変数メンバー>------------------- Protected tableNameValue As String ' 表名 Protected keyFieldValue As String ' キー項目名 '======================================================= ' 機能:コンストラクタ ' 引数:表名 ' 引数:キー項目名 '======================================================= Protected Sub New(tableName As String, keyField As String) tableNameValue = tableName ' 表名 keyFieldValue = keyField ' キー項目名 End Sub '******************************************************* ' 機能:表から1レコードを取得するメソッド ' 引数:主キー値 ' 戻値:取得したレコード '******************************************************* Public Function GetKeyRecord(tCode As String) As DataTable Dim retDt As New DataTable() ' リターン値 Using con As New SqlConnection Using cmd As New SqlCommand ' DBを開く ClsHanbaiKanriDBIO.OpenDB(con, cmd) ' SQL文設定 cmd.CommandText = _ "SELECT * FROM " & tableNameValue & _ " WHERE " & keyFieldValue & " = @value" ' SQL文の引数設定 cmd.Parameters.Clear() ' 引数の実際のサイズから長さを推論する cmd.Parameters.Add("@value", SqlDbType.NChar) ' SQL文引数に値を設定 cmd.Parameters("@value").Value = tCode ' 表からレコード取得 Dim da As New SqlDataAdapter da.SelectCommand = cmd da.Fill(retDt) End Using End Using ' ◆戻値を設定してリターン Return retDt End Function End Class '%%%%%%%%%%%%%%%%% 得意先マスターアクセスクラス %%%%%%%%%%%%%%%%%%% Public Class ClsTokuisakiTableIO Inherits ClsHanbaiKanriDBIO '--------------------< 定数メンバー>-------------------- Protected Const TABLE_NAME As String = "得意先マスター表" Protected Const KEY_FIELD As String = "得意先コード" '======================================================= ' 機能:コンストラクタ ' 引数:なし '======================================================= Public Sub New() ' 最初に基本クラスのコンストラクタを呼び出す MyBase.New(TABLE_NAME, KEY_FIELD) End Sub '******************************************************* ' 機能:得意先マスター表へ1レコード追加するメソッド ' 引数:追加する得意先マスター表データ ' 戻値:なし '******************************************************* Public Sub InsertRecord(tokuisaki As TokuisakiData) ' 今後実装 End Sub '******************************************************* ' 機能:得意先マスター表の1レコードを更新するメソッド ' 引数:更新する得意先データ ' 戻値:なし '******************************************************* Public Sub UpdateRecord(tokuisaki As TokuisakiData) ' 今後実装 End Sub '******************************************************* ' 機能:得意先マスター表を削除するメソッド ' 引数:削除する得意先コード ' 戻値:なし '******************************************************* Public Sub DeleteRecord(tCode As String) ' 今後実装 End Sub End Class