diff --git a/Modules.Database/MSSQLServer.vb b/Modules.Database/MSSQLServer.vb index 381de4ba..32c33efb 100644 --- a/Modules.Database/MSSQLServer.vb +++ b/Modules.Database/MSSQLServer.vb @@ -51,8 +51,12 @@ Public Class MSSQLServer End Function Private Function TestCanConnect() As Boolean + Return TestCanConnect(CurrentSQLConnectionString) + End Function + + Private Function TestCanConnect(ConnectionString As String) As Boolean Try - Dim oConnection As New SqlConnection(CurrentSQLConnectionString) + Dim oConnection As New SqlConnection(ConnectionString) oConnection.Open() oConnection.Close() Return True @@ -63,13 +67,17 @@ Public Class MSSQLServer End Function Private Function GetSQLConnection() As SqlConnection + Return GetSQLConnection(CurrentSQLConnectionString) + End Function + + Private Function GetSQLConnection(ConnectionString As String) As SqlConnection Try - Dim oBuilder As New SqlConnectionStringBuilder() With {.ConnectionString = CurrentSQLConnectionString} - Dim oConnection As New SqlConnection(CurrentSQLConnectionString) + Dim oBuilder As New SqlConnectionStringBuilder() With {.ConnectionString = ConnectionString} + Dim oConnection As New SqlConnection(ConnectionString) oConnection.Open() Try - Dim oConnectionString = CurrentSQLConnectionString.Replace(oBuilder.Password, "XXXXX") + Dim oConnectionString = ConnectionString.Replace(oBuilder.Password, "XXXXX") _Logger.Debug($"Following Connectionstring is open: {oConnectionString}") Catch ex As Exception End Try @@ -117,6 +125,32 @@ Public Class MSSQLServer Return GetDatatable(SqlCommand, _Timeout) End Function + Public Function GetDatatableWithConnection(SqlCommand As String, ConnectionString As String) As DataTable + Try + If TestCanConnect(ConnectionString) = False Then + Return Nothing + End If + + _Logger.Debug("Running Query: {0}", SqlCommand) + + Using oConnection = GetSQLConnection(ConnectionString) + Using oSQLCOmmand = oConnection.CreateCommand() + oSQLCOmmand.CommandText = SqlCommand + oSQLCOmmand.CommandTimeout = _Timeout + + Dim dt As DataTable = New DataTable() + Dim oAdapter As SqlDataAdapter = New SqlDataAdapter(oSQLCOmmand) + oAdapter.Fill(dt) + Return dt + End Using + End Using + Catch ex As Exception + _Logger.Error(ex) + _Logger.Warn("sqlcommand: " & SqlCommand) + Return Nothing + End Try + End Function + ''' ''' Executes the passed sql-statement '''