Advertisement
Guest User

Untitled

a guest
Oct 15th, 2019
156
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.66 KB | None | 0 0
  1. Imports System.Data.SqlClient
  2.  
  3. Public Class MSSQLDB
  4. Implements IDisposable
  5.  
  6. '*** for example ***
  7. 'Using conn As New MSSQLDB("Initial Catalog=...;Data Source=taiyodenki;Server=...;UID=...;PWD=...")
  8. ' Using res = conn.Query("SELECT * FROM T_FOO")
  9. ' While res.Read()
  10. ' Console.WriteLine("Serial={0}", res.GetInt32(0))
  11. ' Console.WriteLine("Name={0}", res.GetString(1))
  12. ' End While
  13. ' End Using
  14. 'End Using
  15.  
  16. Private conn As SqlConnection
  17. Private trans As SqlTransaction
  18.  
  19. Public Sub New(ByVal conStr As String)
  20. Me.conn = New SqlConnection(conStr)
  21. Me.conn.Open()
  22. Me.trans = Me.conn.BeginTransaction()
  23. End Sub
  24.  
  25. Public Function Query(ByVal sql As String) As System.Data.SqlClient.SqlDataReader
  26. Dim reader As New SqlCommand(sql, Me.conn, Me.trans)
  27. Debug.Print(sql)
  28. Return reader.ExecuteReader()
  29. End Function
  30.  
  31. Public Function Exec(ByVal sql As String) As Integer
  32. Dim updater As New SqlCommand(sql, Me.conn, Me.trans)
  33. Debug.Print(sql)
  34. Return updater.ExecuteNonQuery()
  35. End Function
  36.  
  37. Public Sub Commit()
  38. Me.trans.Commit()
  39. End Sub
  40.  
  41. Public Sub Rollback()
  42. Me.trans.Rollback()
  43. End Sub
  44.  
  45. Public Shared Function Esc(ByVal value As String) As String
  46. Return If(value IsNot Nothing, value.Replace("'", "''"), "")
  47. End Function
  48.  
  49. Public Shared Function QEsc(ByVal value As String) As String
  50. Return If(value IsNot Nothing, String.Format("'{0}'", value.Replace("'", "''")), "NULL")
  51. End Function
  52.  
  53.  
  54. #Region "IDisposable Support"
  55. Private disposedValue As Boolean ' 重複する呼び出しを検出するには
  56.  
  57. ' IDisposable
  58. Protected Overridable Sub Dispose(ByVal disposing As Boolean)
  59. If Not Me.disposedValue Then
  60. If disposing Then
  61. ' TODO: マネージ状態を破棄します (マネージ オブジェクト)。
  62. End If
  63.  
  64. ' TODO: アンマネージ リソース (アンマネージ オブジェクト) を解放し、下の Finalize() をオーバーライドします。
  65. ' TODO: 大きなフィールドを null に設定します。
  66. If Me.trans IsNot Nothing Then
  67. Try
  68. Me.trans.Rollback()
  69. Me.trans.Dispose()
  70. Catch ex As Exception
  71. :
  72. End Try
  73. Me.trans = Nothing
  74. End If
  75. If Me.conn IsNot Nothing Then
  76. Try
  77. Me.conn.Close()
  78. Me.conn.Dispose()
  79. Catch ex As Exception
  80. :
  81. End Try
  82. Me.conn = Nothing
  83. End If
  84. End If
  85. Me.disposedValue = True
  86. End Sub
  87.  
  88. ' TODO: 上の Dispose(ByVal disposing As Boolean) にアンマネージ リソースを解放するコードがある場合にのみ、Finalize() をオーバーライドします。
  89. Protected Overrides Sub Finalize()
  90. ' このコードを変更しないでください。クリーンアップ コードを上の Dispose(ByVal disposing As Boolean) に記述します。
  91. Dispose(False)
  92. MyBase.Finalize()
  93. End Sub
  94.  
  95. ' このコードは、破棄可能なパターンを正しく実装できるように Visual Basic によって追加されました。
  96. Public Sub Dispose() Implements IDisposable.Dispose
  97. ' このコードを変更しないでください。クリーンアップ コードを上の Dispose(ByVal disposing As Boolean) に記述します。
  98. Dispose(True)
  99. GC.SuppressFinalize(Me)
  100. End Sub
  101. #End Region
  102.  
  103. End Class
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement