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!