diff --git a/Database.Test/Database.Test.vbproj b/Database.Test/Database.Test.vbproj new file mode 100644 index 00000000..97982eb6 --- /dev/null +++ b/Database.Test/Database.Test.vbproj @@ -0,0 +1,17 @@ + + + + Database.Test + net6.0 + + false + + + + + + + + + + diff --git a/Database.Test/UnitTest1.vb b/Database.Test/UnitTest1.vb new file mode 100644 index 00000000..1e62d338 --- /dev/null +++ b/Database.Test/UnitTest1.vb @@ -0,0 +1,12 @@ +Imports Microsoft.VisualStudio.TestTools.UnitTesting + +Namespace Database.Test + + Public Class UnitTest1 + + Sub TestSub() + + End Sub + End Class +End Namespace + diff --git a/Database/Adapters/MSSQLServer.vb b/Database/Adapters/MSSQLServer.vb index 604febc9..8931c3ae 100644 --- a/Database/Adapters/MSSQLServer.vb +++ b/Database/Adapters/MSSQLServer.vb @@ -4,6 +4,7 @@ Imports System.Data.SqlClient Imports DigitalData.Modules.Encryption Imports DigitalData.Modules.Logging Imports DigitalData.Modules.Base +Imports System.Threading Public Class MSSQLServer Implements IDatabase @@ -264,118 +265,174 @@ Public Class MSSQLServer End Try End Function - ' - Public Function GetDatatable(SqlCommand As String) As DataTable Implements IDatabase.GetDatatable - Return GetDatatable(SqlCommand, QueryTimeout) + ''' + ''' Returns a Datatable for a SQL Statement + ''' + ''' SQL Command Text for Datatable (select XYZ from TableORView) + ''' A datatable + Public Function GetDatatable(pSqlCommand As String, Optional pTimeout As Integer = Constants.DEFAULT_TIMEOUT) As DataTable Implements IDatabase.GetDatatable + Using oSqlConnection = GetSQLConnection() + Return GetDatatableWithConnectionObject(pSqlCommand, oSqlConnection, TransactionMode.WithTransaction, Nothing, pTimeout) + End Using End Function ''' - ''' Returns a datatable for a sql-statement + ''' Returns a datatable for a SQL Statement ''' - ''' sqlcommand for datatable (select XYZ from TableORView) - ''' Returns a datatable - Public Function GetDatatable(SqlCommand As String, Timeout As Integer) As DataTable Implements IDatabase.GetDatatable + ''' SQL Command Object for Datatable (select XYZ from TableORView) + ''' A datatable + Public Function GetDatatable(pSqlCommandObject As SqlCommand, Optional pTimeout As Integer = Constants.DEFAULT_TIMEOUT) As DataTable Implements IDatabase.GetDatatable Using oSqlConnection = GetSQLConnection() - Return GetDatatableWithConnectionObject(SqlCommand, oSqlConnection, TransactionMode.WithTransaction, Nothing, Timeout) + Return GetDatatableWithConnectionObject(pSqlCommandObject, oSqlConnection, TransactionMode.WithTransaction, Nothing, pTimeout) End Using End Function - ' - Public Function GetDatatable(SqlCommand As String, Transaction As SqlTransaction, Optional Timeout As Integer = Constants.DEFAULT_TIMEOUT) As DataTable + Public Function GetDatatable(pSqlCommand As String, pTransaction As SqlTransaction, Optional pTimeout As Integer = Constants.DEFAULT_TIMEOUT) As DataTable Using oSqlConnection = GetSQLConnection() - Return GetDatatableWithConnectionObject(SqlCommand, oSqlConnection, TransactionMode.ExternalTransaction, Transaction, Timeout) + Return GetDatatableWithConnectionObject(pSqlCommand, oSqlConnection, TransactionMode.ExternalTransaction, pTransaction, pTimeout) End Using End Function - ' - Public Async Function GetDatatableAsync(SqlCommand As String, Optional Timeout As Integer = Constants.DEFAULT_TIMEOUT) As Task(Of DataTable) - Return Await Task.Run(Function() GetDatatable(SqlCommand, Timeout)) + Public Function GetDatatable(pSqlCommandObject As SqlCommand, pTransaction As SqlTransaction, Optional pTimeout As Integer = Constants.DEFAULT_TIMEOUT) As DataTable + Using oSqlConnection = GetSQLConnection() + Return GetDatatableWithConnectionObject(pSqlCommandObject, oSqlConnection, TransactionMode.ExternalTransaction, pTransaction, pTimeout) + End Using End Function - ' - Public Function GetDatatableWithConnection(SqlCommand As String, pConnectionString As String, Optional Timeout As Integer = Constants.DEFAULT_TIMEOUT) As DataTable + Public Async Function GetDatatableAsync(pSqlCommand As String, Optional pTimeout As Integer = Constants.DEFAULT_TIMEOUT) As Task(Of DataTable) + Return Await Task.Run(Function() GetDatatable(pSqlCommand, pTimeout)) + End Function + + Public Async Function GetDatatableAsync(pSqlCommandObject As SqlCommand, Optional pTimeout As Integer = Constants.DEFAULT_TIMEOUT) As Task(Of DataTable) + Return Await Task.Run(Function() GetDatatable(pSqlCommandObject, pTimeout)) + End Function + + Public Function GetDatatableWithConnection(pSqlCommand As String, pConnectionString As String, Optional Timeout As Integer = Constants.DEFAULT_TIMEOUT) As DataTable Using oConnection = GetConnection(pConnectionString) - Return GetDatatableWithConnectionObject(SqlCommand, oConnection, Timeout:=Timeout) + Return GetDatatableWithConnectionObject(pSqlCommand, oConnection, pTimeout:=Timeout) End Using End Function - Public Function GetDatatableWithConnectionObject(SqlCommand As String, SqlConnection As SqlConnection, - Optional TransactionMode As TransactionMode = TransactionMode.WithTransaction, - Optional Transaction As SqlTransaction = Nothing, - Optional Timeout As Integer = Constants.DEFAULT_TIMEOUT) As DataTable - Dim oTransaction As SqlTransaction = MaybeGetTransaction(SqlConnection, TransactionMode, Transaction) + Public Function GetDatatableWithConnection(pSqlCommandObject As SqlCommand, pConnectionString As String, Optional Timeout As Integer = Constants.DEFAULT_TIMEOUT) As DataTable + Using oConnection = GetConnection(pConnectionString) + Return GetDatatableWithConnectionObject(pSqlCommandObject, oConnection, pTimeout:=Timeout) + End Using + End Function + + Public Function GetDatatableWithConnectionObject(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 DataTable + Dim oSQLCommand As New SqlCommand(pSqlCommand) + Return GetDatatableWithConnectionObject(oSQLCommand, pSqlConnection, pTransactionMode, pTransaction, pTimeout) + End Function + + Public Function GetDatatableWithConnectionObject(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 DataTable + Dim oTransaction As SqlTransaction = MaybeGetTransaction(pSqlConnection, pTransactionMode, pTransaction) Dim oTable As New DataTable() With {.TableName = Constants.DEFAULT_TABLE} Try - Dim oAdapter As New SqlDataAdapter(New SqlCommand With { - .CommandText = SqlCommand, - .Connection = SqlConnection, - .Transaction = oTransaction, - .CommandTimeout = Timeout - }) + pSqlCommandObject.Connection = pSqlConnection + pSqlCommandObject.Transaction = oTransaction + pSqlCommandObject.CommandTimeout = pTimeout - Logger.Debug("GetDatatableWithConnectionObject: Running Query [{0}]", SqlCommand) + Using oAdapter As New SqlDataAdapter(pSqlCommandObject) + Logger.Debug("GetDatatableWithConnectionObject: Running Query [{0}]", pSqlCommandObject.CommandText) + oAdapter.Fill(oTable) + End Using - oAdapter.Fill(oTable) Catch ex As Exception Logger.Error(ex) - Logger.Warn("GetDatatableWithConnectionObject: Error in GetDatatableWithConnection while executing command: [{0}]", SqlCommand) + Logger.Warn("GetDatatableWithConnectionObject: Error in GetDatatableWithConnection while executing command: [{0}]", pSqlCommandObject) Throw ex Finally - MaybeCommitTransaction(oTransaction, TransactionMode) + MaybeCommitTransaction(oTransaction, pTransactionMode) End Try Return oTable End Function - ' - Public Function ExecuteNonQuery(SQLCommand As String) As Boolean Implements IDatabase.ExecuteNonQuery + Public Function ExecuteNonQuery(pSQLCommand As String) As Boolean Implements IDatabase.ExecuteNonQuery Using oConnection = GetSQLConnection() - Return ExecuteNonQueryWithConnectionObject(SQLCommand, oConnection, TransactionMode.WithTransaction, Nothing, QueryTimeout) + Return ExecuteNonQueryWithConnectionObject(pSQLCommand, oConnection, TransactionMode.WithTransaction, Nothing, QueryTimeout) End Using End Function - ' - Public Function ExecuteNonQuery(SQLCommand As String, Timeout As Integer) As Boolean Implements IDatabase.ExecuteNonQuery + Public Function ExecuteNonQuery(pSQLCommandObject As SqlCommand) As Boolean Using oConnection = GetSQLConnection() - Return ExecuteNonQueryWithConnectionObject(SQLCommand, oConnection, TransactionMode.WithTransaction, Nothing, Timeout) + Return ExecuteNonQueryWithConnectionObject(pSQLCommandObject, oConnection, TransactionMode.WithTransaction, Nothing, QueryTimeout) End Using End Function - ' - Public Function ExecuteNonQuery(SQLCommand As String, Transaction As SqlTransaction, Optional Timeout As Integer = Constants.DEFAULT_TIMEOUT) As Boolean + Public Function ExecuteNonQuery(pSQLCommand As String, pTimeout As Integer) As Boolean Implements IDatabase.ExecuteNonQuery Using oConnection = GetSQLConnection() - Return ExecuteNonQueryWithConnectionObject(SQLCommand, Transaction.Connection, TransactionMode.ExternalTransaction, Transaction, Timeout) + Return ExecuteNonQueryWithConnectionObject(pSQLCommand, oConnection, TransactionMode.WithTransaction, Nothing, pTimeout) End Using End Function - ' - Public Async Function ExecuteNonQueryAsync(SQLCommand As String, Optional Timeout As Integer = Constants.DEFAULT_TIMEOUT) As Task(Of Boolean) - Return Await Task.Run(Function() ExecuteNonQuery(SQLCommand, Timeout)) + Public Function ExecuteNonQuery(pSQLCommandObject As SqlCommand, pTimeout As Integer) As Boolean + Using oConnection = GetSQLConnection() + Return ExecuteNonQueryWithConnectionObject(pSQLCommandObject, oConnection, TransactionMode.WithTransaction, Nothing, pTimeout) + End Using + End Function + + + Public Function ExecuteNonQuery(pSQLCommand As String, pTransaction As SqlTransaction, Optional pTimeout As Integer = Constants.DEFAULT_TIMEOUT) As Boolean + Using oConnection = GetSQLConnection() + Return ExecuteNonQueryWithConnectionObject(pSQLCommand, pTransaction.Connection, TransactionMode.ExternalTransaction, pTransaction, pTimeout) + End Using + End Function + + Public Function ExecuteNonQuery(pSQLCommandObject As SqlCommand, pTransaction As SqlTransaction, Optional pTimeout As Integer = Constants.DEFAULT_TIMEOUT) As Boolean + Using oConnection = GetSQLConnection() + Return ExecuteNonQueryWithConnectionObject(pSQLCommandObject, pTransaction.Connection, TransactionMode.ExternalTransaction, pTransaction, pTimeout) + End Using + End Function + + Public Async Function ExecuteNonQueryAsync(pSQLCommand As String, Optional pTimeout As Integer = Constants.DEFAULT_TIMEOUT) As Task(Of Boolean) + Return Await Task.Run(Function() ExecuteNonQuery(pSQLCommand, pTimeout)) + End Function + + Public Async Function ExecuteNonQueryAsync(pSQLCommandObject As SqlCommand, Optional pTimeout As Integer = Constants.DEFAULT_TIMEOUT) As Task(Of Boolean) + Return Await Task.Run(Function() ExecuteNonQuery(pSQLCommandObject, pTimeout)) End Function - ' Public Function ExecuteNonQueryWithConnection(pSQLCommand As String, ConnString As String, Optional Timeout As Integer = Constants.DEFAULT_TIMEOUT) As Boolean Using oConnection = GetConnection(ConnString) Return ExecuteNonQueryWithConnectionObject(pSQLCommand, oConnection, TransactionMode.WithTransaction, Nothing, Timeout) End Using End Function - Public Function ExecuteNonQueryWithConnectionObject(SqlCommand As String, SqlConnection As SqlConnection, - Optional TransactionMode As TransactionMode = TransactionMode.WithTransaction, - Optional Transaction As SqlTransaction = Nothing, - Optional Timeout As Integer = Constants.DEFAULT_TIMEOUT) As Boolean - Dim oTransaction As SqlTransaction = MaybeGetTransaction(SqlConnection, TransactionMode, Transaction) + Public Function ExecuteNonQueryWithConnection(pSQLCommandObject As SqlCommand, ConnString As String, Optional Timeout As Integer = Constants.DEFAULT_TIMEOUT) As Boolean + Using oConnection = GetConnection(ConnString) + Return ExecuteNonQueryWithConnectionObject(pSQLCommandObject, oConnection, TransactionMode.WithTransaction, Nothing, Timeout) + End Using + End Function + + Public Function ExecuteNonQueryWithConnectionObject(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 Boolean + Dim oSQLCommand As New SqlCommand(pSqlCommand) + Return ExecuteNonQueryWithConnectionObject(oSQLCommand, pSqlConnection, pTransactionMode, pTransaction, pTimeout) + End Function + + Public Function ExecuteNonQueryWithConnectionObject(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 Boolean + Dim oTransaction As SqlTransaction = MaybeGetTransaction(pSqlConnection, pTransactionMode, pTransaction) Try - Logger.Debug("ExecuteNonQueryWithConnectionObject: Running Command [{0}]", SqlCommand) + Logger.Debug("ExecuteNonQueryWithConnectionObject: Running Command [{0}]", pSqlCommandObject.CommandText) - Using oSQLCOmmand = SqlConnection.CreateCommand() - oSQLCOmmand.CommandText = SqlCommand - oSQLCOmmand.CommandTimeout = Timeout - oSQLCOmmand.Transaction = oTransaction - oSQLCOmmand.ExecuteNonQuery() - End Using + pSqlCommandObject.Connection = pSqlConnection + pSqlCommandObject.Transaction = oTransaction + pSqlCommandObject.CommandTimeout = pTimeout + pSqlCommandObject.ExecuteNonQuery() Return True Catch ex As Exception @@ -383,96 +440,126 @@ Public Class MSSQLServer Logger.Warn("ExecuteNonQueryWithConnectionObject: Error in ExecuteNonQueryWithConnectionObject while executing command: [{0}]-[{1}]", SqlCommand, SqlConnection.ConnectionString) Return False Finally - MaybeCommitTransaction(oTransaction, TransactionMode) + MaybeCommitTransaction(oTransaction, pTransactionMode) End Try End Function - ' - Public Function GetScalarValue(SQLQuery As String) As Object Implements IDatabase.GetScalarValue + Public Function GetScalarValue(pSqlQuery As String) As Object Implements IDatabase.GetScalarValue Using oConnection As SqlConnection = GetSQLConnection() - Return GetScalarValueWithConnectionObject(SQLQuery, oConnection) + Return GetScalarValueWithConnectionObject(pSqlQuery, oConnection) End Using End Function - ' - Public Function GetScalarValue(SQLCommand As String, Timeout As Integer) As Object Implements IDatabase.GetScalarValue + Public Function GetScalarValue(pSqlCommandObject As SqlCommand) As Object + Using oConnection As SqlConnection = GetSQLConnection() + Return GetScalarValueWithConnectionObject(pSqlCommandObject, oConnection) + End Using + End Function + + Public Function GetScalarValue(pSqlCommand As String, pTimeout As Integer) As Object Implements IDatabase.GetScalarValue Using oConnection = GetSQLConnection() - Return GetScalarValueWithConnectionObject(SQLCommand, oConnection, TransactionMode.WithTransaction, Nothing, Timeout) + Return GetScalarValueWithConnectionObject(pSqlCommand, oConnection, TransactionMode.WithTransaction, Nothing, pTimeout) End Using End Function - ' - Public Function GetScalarValue(SQLCommand As String, Transaction As SqlTransaction, Optional Timeout As Integer = Constants.DEFAULT_TIMEOUT) As Object + Public Function GetScalarValue(pSqlCommandObject As SqlCommand, pTimeout As Integer) As Object Using oConnection = GetSQLConnection() - Return GetScalarValueWithConnectionObject(SQLCommand, oConnection, TransactionMode.ExternalTransaction, Transaction, Timeout) + Return GetScalarValueWithConnectionObject(pSqlCommandObject, oConnection, TransactionMode.WithTransaction, Nothing, pTimeout) End Using End Function - ' - Public Async Function GetScalarValueAsync(SQLQuery As String, Optional Timeout As Integer = Constants.DEFAULT_TIMEOUT) As Task(Of Object) - Return Await Task.Run(Function() GetScalarValue(SQLQuery, Timeout)) + Public Function GetScalarValue(pSQLCommand As String, pTransaction As SqlTransaction, Optional pTimeout As Integer = Constants.DEFAULT_TIMEOUT) As Object + Using oConnection = GetSQLConnection() + Return GetScalarValueWithConnectionObject(pSQLCommand, oConnection, TransactionMode.ExternalTransaction, pTransaction, pTimeout) + End Using End Function - ' - Public Function GetScalarValueWithConnection(SQLCommand As String, pConnectionString As String, Optional Timeout As Integer = Constants.DEFAULT_TIMEOUT) As Object + Public Function GetScalarValue(pSQLCommandObject As SqlCommand, pTransaction As SqlTransaction, Optional pTimeout As Integer = Constants.DEFAULT_TIMEOUT) As Object + Using oConnection = GetSQLConnection() + Return GetScalarValueWithConnectionObject(pSQLCommandObject, oConnection, TransactionMode.ExternalTransaction, pTransaction, pTimeout) + End Using + End Function + + Public Async Function GetScalarValueAsync(pSQLCommand As String, Optional pTimeout As Integer = Constants.DEFAULT_TIMEOUT) As Task(Of Object) + Return Await Task.Run(Function() GetScalarValue(pSQLCommand, pTimeout)) + End Function + + Public Async Function GetScalarValueAsync(pSQLCommandObject As SqlCommand, Optional pTimeout As Integer = Constants.DEFAULT_TIMEOUT) As Task(Of Object) + Return Await Task.Run(Function() GetScalarValue(pSQLCommandObject, pTimeout)) + End Function + + Public Function GetScalarValueWithConnection(pSQLCommand As String, pConnectionString As String, Optional pTimeout As Integer = Constants.DEFAULT_TIMEOUT) As Object Using oConnection = GetConnection(pConnectionString) - Return GetScalarValueWithConnectionObject(SQLCommand, oConnection, TransactionMode.WithTransaction, Nothing, Timeout) + Return GetScalarValueWithConnectionObject(pSQLCommand, oConnection, TransactionMode.WithTransaction, Nothing, pTimeout) End Using End Function - Public Function GetScalarValueWithConnectionObject(SqlCommand As String, SqlConnection As SqlConnection, - Optional TransactionMode As TransactionMode = TransactionMode.WithTransaction, - Optional Transaction As SqlTransaction = Nothing, - Optional Timeout As Integer = Constants.DEFAULT_TIMEOUT) As Object + Public Function GetScalarValueWithConnection(pSqlCommandObject As SqlCommand, pConnectionString As String, Optional pTimeout As Integer = Constants.DEFAULT_TIMEOUT) As Object + Using oConnection = GetConnection(pConnectionString) + Return GetScalarValueWithConnectionObject(pSqlCommandObject, oConnection, TransactionMode.WithTransaction, Nothing, pTimeout) + End Using + End Function - Dim oTransaction As SqlTransaction = MaybeGetTransaction(SqlConnection, TransactionMode, Transaction) + Public Function GetScalarValueWithConnectionObject(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 Object + Dim oSQLCommand As New SqlCommand(pSqlCommand) + Return GetScalarValueWithConnectionObject(oSQLCommand, pSqlConnection, pTransactionMode, pTransaction, pTimeout) + End Function + + Public Function GetScalarValueWithConnectionObject(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 Object + + Dim oTransaction As SqlTransaction = MaybeGetTransaction(pSqlConnection, pTransactionMode, pTransaction) Dim oResult As Object = Nothing Try - Using oSQLCOmmand = SqlConnection.CreateCommand() - oSQLCOmmand.CommandText = SqlCommand - oSQLCOmmand.CommandTimeout = Timeout - oSQLCOmmand.Transaction = oTransaction + pSqlCommandObject.Connection = pSqlConnection + pSqlCommandObject.CommandTimeout = pTimeout + pSqlCommandObject.Transaction = oTransaction + oResult = pSqlCommandObject.ExecuteScalar() - oResult = oSQLCOmmand.ExecuteScalar() - End Using Catch ex As Exception Logger.Error(ex) - Logger.Warn("GetDatatableWithConnectionObject: Error in GetDatatableWithConnection while executing command: [{0}]", SqlCommand) + Logger.Warn("GetDatatableWithConnectionObject: Error in GetDatatableWithConnection while executing command: [{0}]", pSqlCommandObject) + Finally - MaybeCommitTransaction(oTransaction, TransactionMode) + MaybeCommitTransaction(oTransaction, pTransactionMode) End Try Return oResult End Function - Public Function GetScalarValue(SQLCommand As SqlCommand, OutputParameter As String, Timeout As Integer) As Object + Public Function GetScalarValue(pSqlCommand As SqlCommand, pOutputParameter As String, Optional pTimeout As Integer = Constants.DEFAULT_TIMEOUT) As Object Try If TestCanConnect() = False Then Return Nothing End If - Logger.Debug("GetScalarValue: Running Query [{0}]", SQLCommand) + Logger.Debug("GetScalarValue: Running Query [{0}]", pSqlCommand) - If SQLCommand.CommandText.Contains(" ") Then - SQLCommand.CommandType = CommandType.Text + If pSqlCommand.CommandText.Contains(" ") Then + pSqlCommand.CommandType = CommandType.Text Else - SQLCommand.CommandType = CommandType.StoredProcedure + pSqlCommand.CommandType = CommandType.StoredProcedure End If Using oConnection As SqlConnection = GetSQLConnection() - SQLCommand.Connection = oConnection - SQLCommand.Parameters(OutputParameter).Direction = ParameterDirection.Output - SQLCommand.CommandTimeout = Timeout - SQLCommand.ExecuteNonQuery() + pSqlCommand.Connection = oConnection + pSqlCommand.Parameters(pOutputParameter).Direction = ParameterDirection.Output + pSqlCommand.CommandTimeout = pTimeout + pSqlCommand.ExecuteNonQuery() oConnection.Close() - Return SQLCommand.Parameters(OutputParameter).Value + Return pSqlCommand.Parameters(pOutputParameter).Value End Using Catch ex As Exception Logger.Error(ex) - Logger.Warn($"GetScalarValue failed SQLCommand [{SQLCommand}]") + Logger.Warn($"GetScalarValue failed SQLCommand [{pSqlCommand}]") Return Nothing End Try @@ -509,7 +596,6 @@ Public Class MSSQLServer End Try End Sub - ' Private Sub NewExecuteNonQueryAsync_Callback(ByVal result As IAsyncResult) Dim command As SqlCommand = CType(result.AsyncState, SqlCommand) Dim res = command.EndExecuteNonQuery(result) diff --git a/Database/Database.vbproj b/Database/Database.vbproj index b9f2d82c..5328db6b 100644 --- a/Database/Database.vbproj +++ b/Database/Database.vbproj @@ -99,6 +99,7 @@ + diff --git a/Database/Helpers.vb b/Database/Helpers.vb new file mode 100644 index 00000000..4d09d04b --- /dev/null +++ b/Database/Helpers.vb @@ -0,0 +1,10 @@ +Public Class Helpers + + Public Shared Function MaybeEscapeSQLCommand(pSQLCommand As String) As String + + + + End Function + + +End Class diff --git a/Database/IDatabase.vb b/Database/IDatabase.vb index a473b393..c7ea227f 100644 --- a/Database/IDatabase.vb +++ b/Database/IDatabase.vb @@ -1,4 +1,5 @@ Imports System.Data.Common +Imports System.Data.SqlClient Public Interface IDatabase ''' @@ -7,8 +8,8 @@ Public Interface IDatabase Property DBInitialized As Boolean Property CurrentConnectionString As String - Function GetDatatable(SqlCommand As String, Timeout As Integer) As DataTable - Function GetDatatable(SqlCommand As String) As DataTable + Function GetDatatable(SqlCommand As String, Optional Timeout As Integer = Constants.DEFAULT_TIMEOUT) As DataTable + Function GetDatatable(SqlCommand As SqlCommand, Optional Timeout As Integer = Constants.DEFAULT_TIMEOUT) As DataTable Function ExecuteNonQuery(SQLCommand As String, Timeout As Integer) As Boolean Function ExecuteNonQuery(SQLCommand As String) As Boolean diff --git a/Database/My Project/AssemblyInfo.vb b/Database/My Project/AssemblyInfo.vb index 4c91abdc..7e025ad6 100644 --- a/Database/My Project/AssemblyInfo.vb +++ b/Database/My Project/AssemblyInfo.vb @@ -13,7 +13,7 @@ Imports System.Runtime.InteropServices - + @@ -31,5 +31,5 @@ Imports System.Runtime.InteropServices ' übernehmen, indem Sie "*" eingeben: ' - - + + diff --git a/Modules.sln b/Modules.sln index 6324321a..900c70b0 100644 --- a/Modules.sln +++ b/Modules.sln @@ -37,6 +37,8 @@ Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "ZooFlow", "ZooFlow\ZooFlow. EndProject Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Messaging", "Messaging\Messaging.vbproj", "{AF664D85-0A4B-4BAB-A2F8-83110C06553A}" EndProject +Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Database.Test", "Database.Test\Database.Test.vbproj", "{91B4DFC0-543C-43A7-A9E0-6817DCA277EC}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -111,6 +113,10 @@ Global {AF664D85-0A4B-4BAB-A2F8-83110C06553A}.Debug|Any CPU.Build.0 = Debug|Any CPU {AF664D85-0A4B-4BAB-A2F8-83110C06553A}.Release|Any CPU.ActiveCfg = Release|Any CPU {AF664D85-0A4B-4BAB-A2F8-83110C06553A}.Release|Any CPU.Build.0 = Release|Any CPU + {91B4DFC0-543C-43A7-A9E0-6817DCA277EC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {91B4DFC0-543C-43A7-A9E0-6817DCA277EC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {91B4DFC0-543C-43A7-A9E0-6817DCA277EC}.Release|Any CPU.ActiveCfg = Release|Any CPU + {91B4DFC0-543C-43A7-A9E0-6817DCA277EC}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/ZooFlow/Environment.vb b/ZooFlow/Environment.vb index b902e618..10ba683f 100644 --- a/ZooFlow/Environment.vb +++ b/ZooFlow/Environment.vb @@ -3,8 +3,8 @@ Public Class Environment Public Property User As New State.UserState Public Property Settings As New State.SettingsState - Public Property Service As State.ServiceState + Public Property Service As New State.ServiceState Public Property Database As MSSQLServer Public Property DatabaseIDB As MSSQLServer - Public Property Modules As Dictionary(Of String, State.ModuleState) + Public Property Modules As New Dictionary(Of String, State.ModuleState) End Class