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
Libérer: 2024-12-31 04:19:08
original
150 Les gens l'ont consulté

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()
Copier après la connexion

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.
Copier après la connexion

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
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal