DBアクセス基本クラス(レコード削除) [VB 2010]
Visual Basic 2010/2008 やさしいADO.NET DBプログラム
DBアクセス基本クラスの社員マスター表のレコード削除に必要なメンバーを実装します。
レコード削除関連メンバー
社員テーブルレコード削除に必要なDBアクセス基本クラスのメンバーは次のとおりです。
- コンストラクタ
(引数:なし)
- キー値のレコード存在をチェックするメソッド(引数:テーブル名、キー列名、キー値)
- 引数に指定したテーブルのキー値のレコードを取得するメソッド(引数:テーブル名、キー列名、キー値)
- 引数に指定したテーブルのキー値のレコードを削除するメソッド(引数:テーブル名、キー列名、キー値)
- 行データ生成メソッド(引数:テーブル名、キー列名)
- 接続関連プロパティ設定メソッド(引数:参照 SqlConnectionオブジェクト、参照 SqlCommandオブジェクト)
社員マスター表
| Key |
列名 |
データ型 |
NULLを許容 |
| ● |
社員コード |
nchar(5) |
しない |
|
社員氏名 |
nvarchar(20) |
しない |
|
社員カナ |
nvarchar(40) |
しない |
|
部署コード |
nchar(4) |
しない |
|
更新日時 |
datetime |
しない |
Option Strict On
Imports System.Configuration
Imports System.Data.SqlClient
Imports System.Transactions
Public MustInherit Class ClsSampleDBIO
Public Sub New()
MyBase.New()
End Sub
Public Function ExistKeyData(ByVal tableName As String, _
ByVal keyField As String, _
ByVal keyCode As String) As Boolean
Dim retExist As Boolean
Using con As New SqlConnection
Using cmd As New SqlCommand
Me.SetConnection(con, cmd)
cmd.CommandText = "SELECT COUNT(*) FROM " & _
tableName & " WHERE " & keyField & " = @KeyCode"
cmd.Parameters.Clear()
cmd.Parameters.Add("@KeyCode", SqlDbType.NChar)
cmd.Parameters("@KeyCode").Value = keyCode
con.Open()
Dim count As Integer = CInt(cmd.ExecuteScalar())
If count = 1 Then
retExist = True
Else
retExist = False
End If
End Using
End Using
Return retExist
End Function
Public Function GetKeyData(ByVal tableName As String, _
ByVal keyField As String, _
ByVal keyCode As String) As DataTable
Dim retDt As New DataTable
Using con As New SqlConnection
Using cmd As New SqlCommand
Me.SetConnection(con, cmd)
cmd.CommandText = "SELECT * FROM " & _
tableName & " WHERE " & keyField & " = @keyCode"
cmd.Parameters.Clear()
cmd.Parameters.Add("@keyCode", SqlDbType.NChar)
cmd.Parameters("@KeyCode").Value = keyCode
Dim da As New SqlDataAdapter
da.SelectCommand = cmd
da.Fill(retDt)
End Using
End Using
Return retDt
End Function
Public Function DeleteKeyData(ByVal tableName As String, _
ByVal keyField As String, _
ByVal keyCode As String) As Integer
Dim retDeleteCount As Integer
Using tran As New TransactionScope
Using con As New SqlConnection
Using cmd As New SqlCommand
Me.SetConnection(con, cmd)
cmd.CommandText = "DELETE FROM " & tableName & _
" WHERE " & keyField & " = @keyCode"
cmd.Parameters.Clear()
cmd.Parameters.Add("@keyCode", SqlDbType.NChar)
cmd.Parameters("@KeyCode").Value = keyCode
con.Open()
retDeleteCount = cmd.ExecuteNonQuery()
End Using
End Using
If retDeleteCount = 1 Then
tran.Complete()
Else
Throw New myDBIOException _
("エラー:削除処理に失敗")
End If
End Using
Return retDeleteCount
End Function
Public Function CreateDataRow(ByVal tableName As String, _
ByVal keyField As String) As DataRow
Dim retRow As DataRow
Dim dt As New DataTable
dt = Me.GetKeyData(tableName, keyField, "_")
retRow = dt.NewRow
Return retRow
End Function
Public Sub SetConnection(ByRef con As SqlConnection, _
ByRef cmd As SqlCommand)
Dim settings As ConnectionStringSettings
settings = ConfigurationManager.ConnectionStrings _
("AdoNet.My.MySettings.sampleDBConStr")
If settings Is Nothing Then
Throw New Exception("接続文字列がapp.configに未登録")
Else
con.ConnectionString = settings.ConnectionString
cmd.Connection = con
End If
End Sub
End Class