ASP.NET C # Doit déclarer la variable scalaire

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 ‘/’

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