Database: log transaction mode, add datatable async functions

This commit is contained in:
Jonathan Jenne 2024-01-05 12:45:17 +01:00
parent 9deeb35ad7
commit bdceababcf

View File

@ -109,29 +109,31 @@ Public Class MSSQLServer
End Try End Try
End Function End Function
Private Function MaybeGetTransaction(Connection As SqlConnection, Mode As TransactionMode, Transaction As SqlTransaction) As SqlTransaction Private Function MaybeGetTransaction(pConnection As SqlConnection, pTransactionMode As TransactionMode, pTransaction As SqlTransaction) As SqlTransaction
If Connection Is Nothing Then If pConnection Is Nothing Then
Throw New ArgumentNullException("Connection", "Could not get transaction because connection is null!") Throw New ArgumentNullException("Connection", "Could not get transaction because connection is null!")
End If End If
If Mode = TransactionMode.NoTransaction Then Logger.Debug("Transaction Mode: [{0}]", pTransactionMode.ToString)
If pTransactionMode = TransactionMode.NoTransaction Then
Return Nothing Return Nothing
ElseIf Mode = TransactionMode.ExternalTransaction Then ElseIf pTransactionMode = TransactionMode.ExternalTransaction Then
Return Transaction Return pTransaction
Else Else
Return Connection.BeginTransaction() Return pConnection.BeginTransaction()
End If End If
End Function End Function
Private Function MaybeCommitTransaction(Transaction As SqlTransaction, TransactionMode As TransactionMode) As Boolean Private Function MaybeCommitTransaction(pTransaction As SqlTransaction, pTransactionMode As TransactionMode) As Boolean
Select Case TransactionMode Select Case pTransactionMode
Case TransactionMode.NoTransaction Case TransactionMode.NoTransaction
Return True Return True
Case TransactionMode.ExternalTransaction Case TransactionMode.ExternalTransaction
Return True Return True
Case TransactionMode.WithTransaction Case TransactionMode.WithTransaction
Try Try
Transaction.Commit() pTransaction.Commit()
Return True Return True
Catch ex As Exception Catch ex As Exception
Logger.Warn("Error while committing transaction!") Logger.Warn("Error while committing transaction!")
@ -225,15 +227,15 @@ Public Class MSSQLServer
''' <summary> ''' <summary>
''' This Function intentionally has no try..catch block to have any errors caught outside ''' This Function intentionally has no try..catch block to have any errors caught outside
''' </summary> ''' </summary>
''' <param name="Connection"></param> ''' <param name="pConnection"></param>
''' <returns></returns> ''' <returns></returns>
Private Function OpenSQLConnection(Connection As SqlConnection) As SqlConnection Private Function OpenSQLConnection(pConnection As SqlConnection) As SqlConnection
Try Try
If Connection.State = ConnectionState.Closed Then If pConnection.State = ConnectionState.Closed Then
Connection.Open() pConnection.Open()
End If End If
Return Connection Return pConnection
Catch ex As Exception Catch ex As Exception
Logger.Error("Error while opening Connection!") Logger.Error("Error while opening Connection!")
Logger.Error(ex) Logger.Error(ex)
@ -333,6 +335,20 @@ Public Class MSSQLServer
End Using End Using
End Function End Function
Public Async Function GetDatatableWithConnectionObjectAsync(pSqlCommand As String, pSqlConnection As SqlConnection,
Optional pTransactionMode As TransactionMode = TransactionMode.WithTransaction,
Optional pTransaction As SqlTransaction = Nothing,
Optional pTimeout As Integer = Constants.DEFAULT_TIMEOUT) As Task(Of DataTable)
Return Await Task.Run(Function() GetDatatableWithConnectionObject(pSqlCommand, pSqlConnection, pTransactionMode, pTransaction, pTimeout))
End Function
Public Async Function GetDatatableWithConnectionObjectAsync(pSqlCommandObject As SqlCommand, pSqlConnection As SqlConnection,
Optional pTransactionMode As TransactionMode = TransactionMode.WithTransaction,
Optional pTransaction As SqlTransaction = Nothing,
Optional pTimeout As Integer = Constants.DEFAULT_TIMEOUT) As Task(Of DataTable)
Return Await Task.Run(Function() GetDatatableWithConnectionObject(pSqlCommandObject, pSqlConnection, pTransactionMode, pTransaction, pTimeout))
End Function
Public Function GetDatatableWithConnectionObject(pSqlCommand As String, pSqlConnection As SqlConnection, Public Function GetDatatableWithConnectionObject(pSqlCommand As String, pSqlConnection As SqlConnection,
Optional pTransactionMode As TransactionMode = TransactionMode.WithTransaction, Optional pTransactionMode As TransactionMode = TransactionMode.WithTransaction,
Optional pTransaction As SqlTransaction = Nothing, Optional pTransaction As SqlTransaction = Nothing,