Ich habe ein Formular mit Schaltfläche, die Datensätze aus Oracle-Datenbank finden sollte. Ich habe drei Textfelder auf demselben Formular, und wenn Text mit Werten in Feldern von DB übereinstimmt, sollte Datagrid mir diese Datensätze anzeigen. Hier ist mein Code:Dynamische SQL - Abrufen von Oracle
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
'connect to oracle DB
Dim oradb As String = "Data Source=orcl;User Id=Lucky;Password=Example;"
Dim conn As New OracleConnection(oradb)
conn.Open()
Dim SQL As String
SQL = "SELECT * FROM MyTable WHERE 1=1"
'SQL statement for 1st textbox
If Not TxtName.Text = "" Then
SQL = SQL & " AND USER_NAME =" & TxtName.Text
End If
'SQL statement for 2nd textbox
If Not TxtSurname.Text = "" Then
SQL = SQL & " AND USER_SURNAME =" & TxtSurname.Text
End If
'SQL statement for 3rd textbox
If Not TxtAddress.Text = "" Then
SQL = SQL & " AND USER_ADDRESS=" & TxtAddress.Text
End If
'select SQL statements and retrieve data using ExecuteReader
Dim cmd As New OracleCommand(SQL, conn)
cmd.CommandType = CommandType.Text
Dim dr As OracleDataReader = cmd.ExecuteReader()
Dim dt As New DataTable
dt.Load(dr)
DataGridView1.DataSource = dt
End Sub
Was mache ich falsch, passiert nichts beim Klicken auf die Schaltfläche?
Sie über die Parameter für Ihre Eingabewerte werden sollen. Entferne auch das 'wo 1 = 1', es dient keinem Zweck. –
Hallo Andrew. Welche Parameter, ich bin VB.NET-Neuling? "Where 1 = 1" dient in Access und einige DB, dachte ich auch hier, werde es entfernen. – LuckyLuke82
@ LuckyLuke82 er meint, verketten Sie nicht Ihren Wert zu Ihrer Frage. Jemand könnte ein Sonderzeichen in das Textfeld schreiben und Ihre Datenbank vermasseln. –