販売管理データベースアクセスクラス
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