Skip to content

Instantly share code, notes, and snippets.

@hymkor
Created September 27, 2019 04:59
Show Gist options
  • Save hymkor/e98100e6f694acfe18895128f4e3619b to your computer and use it in GitHub Desktop.
Save hymkor/e98100e6f694acfe18895128f4e3619b to your computer and use it in GitHub Desktop.
SQL Server 接続のラッパーライブラリ(VBNet)
Imports System.Data.SqlClient
Public Class MSSQLDB
Implements IDisposable
'*** for example ***
'Using conn As New MSSQLDB("Initial Catalog=...;Data Source=taiyodenki;Server=...;UID=...;PWD=...")
' Using res = conn.Query("SELECT * FROM T_FOO")
' While res.Read()
' Console.WriteLine("Serial={0}", res.GetInt32(0))
' Console.WriteLine("Name={0}", res.GetString(1))
' End While
' End Using
'End Using
Private conn As SqlConnection
Private trans As SqlTransaction
Public Sub New(ByVal conStr As String)
Me.conn = New SqlConnection(conStr)
Me.conn.Open()
Me.trans = Me.conn.BeginTransaction()
End Sub
Public Function Query(ByVal sql As String) As System.Data.SqlClient.SqlDataReader
Dim reader As New SqlCommand(sql, Me.conn, Me.trans)
Debug.Print(sql)
Return reader.ExecuteReader()
End Function
Public Function Exec(ByVal sql As String) As Integer
Dim updater As New SqlCommand(sql, Me.conn, Me.trans)
Debug.Print(sql)
Return updater.ExecuteNonQuery()
End Function
Public Sub Commit()
Me.trans.Commit()
End Sub
Public Sub Rollback()
Me.trans.Rollback()
End Sub
Public Shared Function Esc(ByVal value As String) As String
Return If(value IsNot Nothing, value.Replace("'", "''"), "")
End Function
Public Shared Function QEsc(ByVal value As String) As String
Return If(value IsNot Nothing, String.Format("'{0}'", value.Replace("'", "''")), "NULL")
End Function
#Region "IDisposable Support"
Private disposedValue As Boolean ' 重複する呼び出しを検出するには
' IDisposable
Protected Overridable Sub Dispose(ByVal disposing As Boolean)
If Not Me.disposedValue Then
If disposing Then
' TODO: マネージ状態を破棄します (マネージ オブジェクト)。
End If
' TODO: アンマネージ リソース (アンマネージ オブジェクト) を解放し、下の Finalize() をオーバーライドします。
' TODO: 大きなフィールドを null に設定します。
If Me.trans IsNot Nothing Then
Try
Me.trans.Rollback()
Me.trans.Dispose()
Catch ex As Exception
:
End Try
Me.trans = Nothing
End If
If Me.conn IsNot Nothing Then
Try
Me.conn.Close()
Me.conn.Dispose()
Catch ex As Exception
:
End Try
Me.conn = Nothing
End If
End If
Me.disposedValue = True
End Sub
' TODO: 上の Dispose(ByVal disposing As Boolean) にアンマネージ リソースを解放するコードがある場合にのみ、Finalize() をオーバーライドします。
Protected Overrides Sub Finalize()
' このコードを変更しないでください。クリーンアップ コードを上の Dispose(ByVal disposing As Boolean) に記述します。
Dispose(False)
MyBase.Finalize()
End Sub
' このコードは、破棄可能なパターンを正しく実装できるように Visual Basic によって追加されました。
Public Sub Dispose() Implements IDisposable.Dispose
' このコードを変更しないでください。クリーンアップ コードを上の Dispose(ByVal disposing As Boolean) に記述します。
Dispose(True)
GC.SuppressFinalize(Me)
End Sub
#End Region
End Class
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment