Digital Data - Marlon Schreiber 3a25947af0 MS
2019-02-05 18:49:13 +01:00

143 lines
5.8 KiB
VB.net

Imports Oracle.ManagedDataAccess.Client
Imports System.Data.SqlClient
Imports DigitalData.Modules.Logging
Public Class clsNI_DB
Private Shared _Logger As DigitalData.Modules.Logging.Logger
Public Shared Function CHECK_DESKR_INDEX(ByVal _dbTyp As String, ByVal _indexname As String, ByVal _indexvalue As String, ByVal _sql As String, datasource As String, initialcatalog As String, userid As String, pw As String) As Integer
Try
Try
Dim sql As String = _sql
Dim _vsql As String
Dim _replace As String
If IsNumeric(_indexvalue) Then
_replace = _indexvalue
Else
_replace = "'" & _indexvalue & "'"
End If
_vsql = sql.Replace("[%" & _indexname & "]", _replace)
_Logger.Info("Check Deskriptiven Index-Value - Select Scalar: " & _vsql)
If _dbTyp = "Oracle" Then
Dim ergebnis As Integer = CheckIndex_oracle(_vsql, datasource, initialcatalog, userid, pw)
If ergebnis = 1 Then
Return 1
Else
If ergebnis > 1 Then
Return 2
Else
Return 0
End If
End If
ElseIf _dbTyp = "MS-SQL" Then
Dim ergebnis As Integer = CheckIndex_MSSSQL(_vsql, datasource, userid, pw, initialcatalog)
If ergebnis = 1 Then
Return 1
Else
If ergebnis > 1 Then
Return 2
Else
Return 0
End If
End If
End If
Catch ex As Exception
_Logger.Error(ex)
Return 99
End Try
Catch ex As Exception
End Try
End Function
' Überprüft den Indexwert und gibt 0 oder mehr zurück
Public Shared Function CheckIndex_oracle(ByVal _scalar_select As String, ByVal host As String, ByVal servicename As String, ByVal User As String, ByVal pw As String) As Integer
Try
Dim conn As New OracleConnectionStringBuilder
Dim connstr As String
If host <> "" And servicename <> "" Then
connstr = "Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=" & host & ")(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=" &
servicename & ")));User Id=" & User & ";Password=" & pw & ";"
Else
conn.DataSource = host
conn.UserID = User
conn.Password = pw
conn.PersistSecurityInfo = True
conn.ConnectionTimeout = 120
connstr = conn.ConnectionString
End If
Dim Oracle_Connection As New OracleConnection(connstr)
Try
Oracle_Connection.Open()
Catch ex As Exception
_Logger.Error(ex)
' DB-Connection schliessen
Return 99
Oracle_Connection.Close()
End Try
Dim Command As OracleCommand
' Verbindung zur Datenbank aufbauen
' SQL-Abfrage definieren
Command = New OracleCommand(_scalar_select, Oracle_Connection)
Dim ergebnis As String = Command.ExecuteScalar.ToString
Return CLng(ergebnis)
Catch ex As Exception
If ex.Message.Contains("ORA-00904") Then
_Logger.Info("Error in CheckIndex_Oracle: " & ex.Message)
Else
_Logger.Warn(ex)
End If
' an dieser Stelle sollte jeder unvorhergesehene Fehler der Funktion abgefangen werden
Return 0
End Try
End Function
Public Shared Function CheckIndex_MSSSQL(ByVal scalar_select As String, ByVal datasource As String, ByVal User As String, ByVal pw As String, ByVal init_Cata As String) As Integer
Try
_Logger.Info("MSSQL-Command: " & scalar_select)
' die nötigen Variablen definieren
Dim result As Object = Nothing
Dim Connection As SqlConnection = Nothing
' Dim ConnectionString As SqlConnectionStringBuilder = Nothing
Dim Command As SqlCommand = Nothing
Dim DataAdapter As SqlDataAdapter = Nothing
Dim DataSet As DataSet = Nothing
Dim con As String
' ConnectionString aufbauen
If User = "WINAUTH" Then
con = "Data Source=" & datasource & ";Initial Catalog=" & init_Cata & ";Trusted_Connection=True;"
Else
con = "Server=" & datasource & ";Database=" & init_Cata & ";User Id=" & User & ";Password=" & pw & ";"
End If
' Verbindung zur Datenbank aufbauen
Try
Connection = New SqlConnection(con)
Connection.Open()
Catch ex As Exception
_Logger.Warn("CheckIndex_MSSSQL - Message: " & ex.Message)
' DB-Connection schliessen
Return Nothing
End Try
' SQL-Abfrage definieren
Try
Command = New SqlCommand(scalar_select, Connection)
Catch ex As Exception
_Logger.Warn("ClassNIDatenbankzugriff.CheckIndex_MSSSQLsqlcommand definieren: " & ex.Message)
Return Nothing
End Try
Dim ergebnis As String = Command.ExecuteScalar.ToString
Return CLng(ergebnis)
Catch ex As Exception
_Logger.Error(ex)
Return 0
End Try
End Function
End Class