143 lines
5.8 KiB
VB.net
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
|