J’essaye de remplir un GridView en utilisant une méthode appelée PopulateGrid () (ci-dessous), mais je continue à avoir la même erreur de serveur “Doit déclarer la variable scalaire” @QUALID “.
public void PopulateGrid() { Ssortingng val = TextBox2.Text; Ssortingng sql = "SELECT QLEVELNAME FROM Qual_Levels WHERE QUALID=@QUALID"; SqlCommand cmd = new SqlCommand(sql, new SqlConnection(ConfigurationManager.ConnectionSsortingngs["RecruitmentDBConnSsortingng"].ConnectionSsortingng)); cmd.Parameters.Add(new SqlParameter("QUALID", val)); cmd.Connection.Open(); SqlDataAdapter da = new SqlDataAdapter(sql, cmd.Connection); DataSet ds = new DataSet(); da.Fill(ds, "Qual_Levels"); SelectionGrid.DataSource = ds; SelectionGrid.DataBind(); ds.Dispose(); da.Dispose(); cmd.Connection.Close(); cmd.Connection.Dispose(); }
Le GridView est déclaré comme tel.
Après avoir essayé d’innombrables choses et parcouru les forums, je me heurte toujours à la même erreur.
Erreur serveur dans l’application ‘/’
- Ajouter de nouvelles données de ligne à gridview asp.net c #
- Question concernant Visible = false et display: none;
- Fermeture d’une connexion dans la méthode de «déchargement»
- A quoi sert la classe Triplet? Est-ce lié aux tuples?
- La propriété de nom DisplayAtsortingbute ne fonctionne pas dans Silverlight
Doit déclarer la variable scalaire “@QUALID”.
Description: une exception non gérée s’est produite lors de l’exécution de la demande Web en cours. Consultez la trace de la stack pour plus d’informations sur l’erreur et son origine dans le code.
Détails des exceptions: System.Data.SqlClient.SqlException: Doit déclarer la variable scalaire “@QUALID”.
Erreur de source:
Ligne 282: DataSet ds = new DataSet ();
Ligne 283: da.Fill (ds, “Qual_Levels”);
Si quelqu’un pouvait nous éclairer sur la situation, je vous en serais très reconnaissant!
Ce:
cmd.Parameters.Add(new SqlParameter("QUALID", val));
devrait être ceci:
cmd.Parameters.Add(new SqlParameter("@QUALID", val));
Désolé, tapé trop vite, essayez:
cmd.Parameters.AddWithValue("@QUALID", val);
OK, vous avez un problème légèrement plus fondamental dans votre code. Vous créez un object de commande, mais vous transmettez ensuite la chaîne SQL et la connexion de la commande à votre adaptateur de données, où il exécutera votre chaîne SQL sans paramètre sur sa connexion.
Je n’ai pas trop utilisé dataadapters, mais je pense que vous devez définir les parameters dans la commande select de votre adaptateur.
Essayez d’append le @ à votre paramètre SQL comme
cmd.Parameters.Add(new SqlParameter("@QUALID", val));
Il vous manque le “@” où vous ajoutez le paramètre:
SqlParameter("@QUALID", val)
changement
cmd.Parameters.Add(new SqlParameter("QUALID", val));
soit
cmd.Parameters.Add(new SqlParameter("@QUALID", val));
ou
cmd.Parameters.Add("@QUALID", SqlDbType.WhatFitsYourDB).Value = val;
et vous devriez être bon pour aller. Votre problème est qu’il vous manque un “@” dans le nom du paramètre
Ssortingng val = TextBox2.Text; Ssortingng sql = "SELECT QLEVELNAME FROM Qual_Levels WHERE QUALID=@QUALID"; SqlCommand cmd = new SqlCommand(sql, new SqlConnection(ConfigurationManager.ConnectionSsortingngs["RecruitmentDBConnSsortingng"].ConnectionSsortingng)); SqlDataAdapter da = new SqlDataAdapter(sql, cmd.Connection); DataSet ds = new DataSet(); cmd.Parameters.Add(new SqlParameter("@QUALID", val)); da.SelectCommand = cmd; cmd.Connection.Open(); da.Fill(ds, "Qual_Levels"); SelectionGrid.DataSource = ds; SelectionGrid.DataBind(); ds.Dispose(); da.Dispose(); cmd.Connection.Close(); cmd.Connection.Dispose();
utilisez dis one cela fonctionnera … ( da.selectcommand = cmd;
)