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