Heim > Datenbank > MySQL-Tutorial > Warum gibt meine parametrisierte Abfrage den Fehler „Fehlender Parameter' aus?

Warum gibt meine parametrisierte Abfrage den Fehler „Fehlender Parameter' aus?

Patricia Arquette
Freigeben: 2024-12-31 04:19:08
Original
151 Leute haben es durchsucht

Why Does My Parameterized Query Throw a

Fehler bei der parametrisierten Abfrage: Fehlender Parameter

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()
Nach dem Login kopieren

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.
Nach dem Login kopieren

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
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage