265 lines
11 KiB
VB.net
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 |