Einführung:
Parametrierte Abfragen bieten verbesserte Sicherheit und Leistung, indem sie die Verwendung von Parametern ermöglichen wird getrennt von der Abfragezeichenfolge angegeben. Wenn jedoch ein erforderlicher Parameter nicht angegeben wird, kann dies zu dem Fehler „Die parametrisierte Abfrage erwartet den Parameter, der nicht bereitgestellt wurde“ führen.
Szenario:
Bedenken Der folgende Codeausschnitt aus einem Visual Basic .NET Anwendung:
Private Sub TextBox2_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox2.TextChanged list.Items.Clear() cmd.CommandText = "SELECT * FROM borrow where (Department LIKE '%" & TextBox2.Text & "%')" cmd.Connection = con cmd.CommandType = CommandType.Text con.Open() rd = cmd.ExecuteReader() If rd.HasRows = True Then While rd.Read() Dim listview As New ListViewItem listview.Text = rd("ID").ToString listview.SubItems.Add(rd("Department").ToString) listview.SubItems.Add(rd("Purpose").ToString) listview.SubItems.Add(rd("Items_Details").ToString) listview.SubItems.Add(rd("Requested_by").ToString) listview.SubItems.Add(rd("Approved_by").ToString) listview.SubItems.Add(rd("Date").ToString) listview.SubItems.Add(rd("Status").ToString) listview.SubItems.Add(rd("Date_Returned").ToString) list.Items.Add(listview) End While End If con.Close()
Problem:
Bei der Eingabe einer Suchzeichenfolge in das Textfeld löst der Code den folgenden Fehler aus:
The parameterized query '(@Parameter1 nvarchar(4000))SELECT * FROM borrow where (Departme' expects the parameter '@Parameter1', which was not supplied.
Lösung:
Dieser Fehler tritt auf, weil in der Abfragezeichenfolge kein Parameter angegeben ist. Um dieses Problem zu beheben, fügen Sie einen Parameter wie „@Department“ hinzu und geben Sie seinen Wert basierend auf der Benutzereingabe an:
cmd.Parameters.Add("@Department", SqlDbType.VarChar) If (TextBox2.Text = Nothing) Then cmd.Parameters("@Department").Value = DBNull.Value Else cmd.Parameters("@Department").Value = TextBox2.Text End If
Dieser Code prüft, ob das Textfeld leer ist, und setzt den Parameterwert auf DBNull.Value, wenn dies der Fall ist . Andernfalls wird der Parameterwert auf den im Textfeld eingegebenen Text gesetzt.
Durch die Angabe des Parameters wird die Abfrage erfolgreich ausgeführt und gibt die gefilterten Daten zurück.
Das obige ist der detaillierte Inhalt vonWarum gibt meine parametrisierte Abfrage den Fehler „Fehlender Parameter' aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!