ToolCollection/ToolCollection/frmNI_SQLTest.vb

265 lines
11 KiB
VB.net

Imports Oracle.DataAccess.Client
Imports System.Data.SqlClient
Imports Oracle.ManagedDataAccess.Client
Public Class frmNI_SQLTest
Public vdatasource As String
Public vUserID As String
Public vPassword As String
Public vInitialCatalog As String
Public vSQL As String
Public vDB_Art As String
Public vstartwert As String
Public Sub New() 'ByVal selectcommand As String, ByVal startwert As String, ByVal vdatasource As String, ByVal vUserID As String, ByVal vPassword As String, ByVal vDB_Art As String, Optional ByVal vInitialCatalog As String = "")
' Dieser Aufruf ist für den Windows Form-Designer erforderlich.
InitializeComponent()
' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu.
Try
vstartwert = frmNIVerknuepfungen.vstartwert
vdatasource = frmNIVerknuepfungen.vdatasource
vUserID = frmNIVerknuepfungen.vUserID
vPassword = frmNIVerknuepfungen.vPassword
vInitialCatalog = frmNIVerknuepfungen.vInitialCatalog
vSQL = frmNIVerknuepfungen.vSQL
vDB_Art = frmNIVerknuepfungen.vDB_Art
Me.txtStartwert.Text = vstartwert
Aktualisieren()
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Critical, "Fehler bei Laden des Formulares:")
End Try
End Sub
Public Sub Werte(ByVal selectcommand As String, ByVal startwert As String, ByVal vdatasource As String, ByVal vUserID As String, ByVal vPassword As String, ByVal vDB_Art As String, Optional ByVal vInitialCatalog As String = "")
vstartwert = startwert
vdatasource = vdatasource
vUserID = vUserID
vPassword = vPassword
vInitialCatalog = vInitialCatalog
vSQL = selectcommand
vDB_Art = vDB_Art
End Sub
Private Sub tsbaktualisieren_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tsbaktualisieren.Click
Aktualisieren()
End Sub
Public Sub Aktualisieren()
'Try
If vDB_Art.ToString = "Oracle" Then
GetDataFromOracle()
ElseIf vDB_Art.ToString = "MS-SQL" Then
Dim typ As Data.SqlDbType
If IsNumeric(txtStartwert.Text) Then
typ = SqlDbType.BigInt
Else
typ = SqlDbType.VarChar
End If
GetDataFromMSSQL(typ)
Else
MsgBox("Für die Datenbank-Art: " & vDB_Art & " ist die Vorschau aktuell noch nicht implementiert!", MsgBoxStyle.Information, "Achtung: ")
Me.Close()
End If
'Catch ex As Exception
' MsgBox(ex.Message, MsgBoxStyle.Critical, "Fehler bei Aktualisieren:")
'End Try
End Sub
Sub GetDataFromOracle()
Try
' OracleConnection = Nothing
' ConnectionString aufbauen (aus Settings auslesen)
Dim conn As New OracleConnectionStringBuilder
Dim connstr As String
If vdatasource <> "" And vInitialCatalog <> "" Then
connstr = "Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=" & vdatasource & ")(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=" & _
vInitialCatalog & ")));User Id=" & vUserID & ";Password=" & vPassword & ";"
Else
conn.DataSource = vdatasource
conn.UserID = vUserID
conn.Password = vPassword
conn.PersistSecurityInfo = True
conn.ConnectionTimeout = 120
connstr = conn.ConnectionString
End If
Dim Oracle_Connection As New OracleConnection(connstr)
' Dim ConnectionString As OracleConnectionStringBuilder = Nothing
Dim Command As OracleCommand = Nothing
Dim DataAdapter As OracleDataAdapter = Nothing
' ConnectionString aufbauen (aus Settings auslesen)
'ConnectionString = New OracleConnectionStringBuilder()
'ConnectionString.DataSource = vdatasource
'ConnectionString.UserID = vUserID
'ConnectionString.Password = vPassword
' Verbindung zur Datenbank aufbauen
Try
' Connection = New OracleConnection(ConnectionString.ConnectionString)
Oracle_Connection.Open()
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Critical, "Fehler bei Verbindung zur Datenbank aufbauen:")
' DB-Connection schliessen
Oracle_Connection.Close()
End Try
' SQL-Abfrage definieren
'Command.Parameters.Add(":Startwert", OracleDbType.Int32)
'Command.Parameters(":Startwert").Value = Me.txtStartwert.Text
Me.txtSQL_String.Text = vSQL.Replace(frmNIVerknuepfungen.vReplace, Me.txtStartwert.Text)
vSQL = txtSQL_String.Text
Command = New OracleCommand(vSQL, Oracle_Connection) 'OracleCommand(vSQL, Connection)
'Catch ex As Exception
' MsgBox(ex.Message, MsgBoxStyle.Critical, "Fehler bei Oracle SQL-Abfrage definieren:")
' DB-Connection schliessen
' Me.CloseOracleDb(Connection)
'End Try
If Command IsNot Nothing Then
'Try
' Datenadapter laden
DataAdapter = New OracleDataAdapter(Command) 'OracleDataAdapter(Command)
MyDataset.Tables("TBErgebnis").Clear()
' DataSet erzeugen
Dim DataSet = New DataSet()
ListBox1.Items.Clear()
' DataSet mit Daten füllen
DataAdapter.Fill(DataSet)
For Each Row As DataRow In DataSet.Tables(0).Rows
ListBox1.Items.Add(Row.Item(0))
Next
Me.BindingSource1.ResumeBinding()
' DB-Connection schliessen
Oracle_Connection.Close()
' Catch ex As Exception
' MsgBox(ex.Message, MsgBoxStyle.Critical, "Fehler bei Daten auslesen:")
' ' DB-Connection schliessen
' Me.CloseOracleDb(Connection)
'End Try
Else
' kann eintreten, wenn entweder die SQL-Anweisung falsch ist oder wenn die DataConnection nicht richtig aufgebaut werden konnte
MsgBox(vSQL, MsgBoxStyle.Critical, "Oracle SQL-Anweisung ist ungültig. Command-Objekt konnte nicht erstellt werden:")
End If
Catch ex As Exception
'an dieser Stelle sollte jeder unvorhergesehene Fehler der Funktion abgefangen werden
MsgBox(ex.Message, MsgBoxStyle.Critical, "Ein unbekannter Fehler in GetDataFromOracle:")
End Try
End Sub
Sub GetDataFromMSSQL(ByVal _typ As Data.SqlDbType)
Try
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
' ConnectionString aufbauen (aus Settings auslesen)
'ConnectionString = New SqlConnectionStringBuilder()
'ConnectionString.DataSource = vdatasource
'ConnectionString.UserID = vUserID
'ConnectionString.Password = vPassword
'ConnectionString.InitialCatalog = vInitialCatalog
Dim con As String
' ConnectionString aufbauen
If vUserID = "WINAUTH" Then
con = "Data Source=" & vdatasource & ";Initial Catalog=" & vInitialCatalog & ";Trusted_Connection=True;"
Else
con = "Server=" & vdatasource & ";Database=" & vInitialCatalog & ";User Id=" & vUserID & ";Password=" & vPassword & ";"
End If
' Verbindung zur Datenbank aufbauen
Try
Connection = New SqlConnection(con)
Connection.Open()
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Critical, "GetDataFromMSSQL - Fehler bei Verbindung zur Datenbank aufbauen:")
End Try
' SQL-Abfrage definieren
Try
Me.txtSQL_String.Text = vSQL.Replace(frmNIVerknuepfungen.vReplace, Me.txtStartwert.Text)
vSQL = txtSQL_String.Text
Command = New SqlCommand(vSQL, Connection)
' Command.Parameters.Add("@Startwert", _typ)
' Command.Parameters("@Startwert").Value = Me.txtStartwert.Text
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Critical, "GetDataFromMSSQL - Fehler bei SQL-Abfrage definieren:")
' DB-Connection schliessen
Me.CloseMssqlDb(Connection)
End Try
If Command IsNot Nothing Then
Try
' Datenadapter laden
DataAdapter = New SqlDataAdapter(Command)
' DataSet mit Daten füllen
MyDataset.Tables("TBErgebnis").Clear()
' DataSet erzeugen
Dim DataSet1 = New DataSet()
ListBox1.Items.Clear()
' DataSet mit Daten füllen
DataAdapter.Fill(DataSet1)
For Each Row As DataRow In DataSet1.Tables(0).Rows
ListBox1.Items.Add(Row.Item(0))
Next
BindingSource1.DataSource = MyDataset.Tables("TBErgebnis")
'Me.BindingSource1.ResumeBinding()
' DB-Connection schliessen
Me.CloseMssqlDb(Connection)
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Critical, "GetDataFromMSSQL - Fehler bei Daten auslesen:")
' DB-Connection schliessen
Me.CloseMssqlDb(Connection)
End Try
Else
' kann eintreten, wenn entweder die SQL-Anweisung falsch ist oder wenn die DataConnection nicht richtig aufgebaut werden konnte
MsgBox(vSQL, MsgBoxStyle.Critical, "GetDataFromMSSQL - Command-Objekt konnte nicht erstellt werden:")
End If
Catch ex As Exception
MsgBox(ex.Message & vbNewLine & "vSQL: " & vSQL, MsgBoxStyle.Critical, "GetDataFromMSSQL - Ein unbekannter Fehler in GetDataFromMSSQL:")
End Try
End Sub
Private Sub CloseOracleDb(ByRef Connection As System.Data.OleDb.OleDbConnection) 'OracleConnection)
' wenn eine Datenbank-Connection aufgebaut ist
If Connection IsNot Nothing Then
' diese schliessen
Connection.Close()
Connection = Nothing
End If
End Sub
Private Sub CloseMssqlDb(ByRef Connection As SqlConnection)
' wenn eine Datenbank-Connection aufgebaut ist
If Connection IsNot Nothing Then
' diese schliessen
Connection.Close()
Connection = Nothing
End If
End Sub
Private Sub ToolStripButton1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
End Sub
End Class