Created
September 27, 2019 04:59
-
-
Save hymkor/e98100e6f694acfe18895128f4e3619b to your computer and use it in GitHub Desktop.
SQL Server 接続のラッパーライブラリ(VBNet)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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