Maison >base de données >tutoriel mysql >Pourquoi ma requête paramétrée génère-t-elle une erreur « Paramètre manquant » ?

Pourquoi ma requête paramétrée génère-t-elle une erreur « Paramètre manquant » ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-31 04:19:08162parcourir

Why Does My Parameterized Query Throw a

Erreur de requête paramétrée : paramètre manquant

Introduction :

Les requêtes paramétrées offrent une sécurité et des performances améliorées en permettant aux paramètres d'être spécifié séparément de la chaîne de requête. Cependant, si un paramètre obligatoire n'est pas fourni, cela peut entraîner l'erreur "La requête paramétrée attend le paramètre qui n'a pas été fourni."

Scénario :

Considérez l'extrait de code suivant à partir d'un Visual Basic .NET application :

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()

Problème :

Lors de la saisie d'une chaîne de recherche dans la zone de texte, le code génère l'erreur suivante :

The parameterized query '(@Parameter1 nvarchar(4000))SELECT * FROM
borrow where (Departme' expects the parameter '@Parameter1', which was
not supplied.

Résolution :

Cette erreur se produit car aucun paramètre n'est spécifié dans la chaîne de requête. Pour résoudre ce problème, ajoutez un paramètre tel que @Department et spécifiez sa valeur en fonction de la saisie de l'utilisateur :

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

Ce code vérifie si la zone de texte est vide et définit la valeur du paramètre sur DBNull.Value si elle l'est. . Sinon, il définit la valeur du paramètre sur le texte saisi dans la zone de texte.

En fournissant le paramètre, la requête s'exécutera avec succès et renverra les données filtrées.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn