Variable locale non assignée?? quoi faire?

Signaler
Messages postés
299
Date d'inscription
jeudi 18 décembre 2003
Statut
Membre
Dernière intervention
9 février 2010
-
Messages postés
834
Date d'inscription
samedi 15 novembre 2008
Statut
Membre
Dernière intervention
14 janvier 2017
-
salut tout le monde:
j'ai une partie de code source (d'un composant webpart) avec laquelle je veux afficher une table de base de données,
lors de la compilation, ça m'affiche le message suivant :
Utilisation d'une variable locale non assignée
'objDataSet'
je trouve pas quoi faire
aidez moi svp
mon code :
/////////////
      protectedoverridevoid
RenderWebPart(HtmlTextWriter output)

            {

                  DataSet
objDataSet;//= new DataSet("root");

                  //Set up connection string from custom properties

                  string strConnection;

                  strConnection =
"Data Source=" + SERVER;

                  strConnection +=
";Initial Catalog=" + DataBase;

                  strConnection +=
";Integrated Security=True"; 

                  //Query pubs database

                  string strSQL = "select * from Classe";

                  //Try to run the query

                  try 

                  {

                        objDataSet
= new DataSet("root");

                        SqlDataAdapter
dd = new SqlDataAdapter();

                        SqlConnection
conn = new SqlConnection(strConnection);

                        dd.SelectCommand
= new SqlCommand(strSQL, conn);

                        dd.Fill(objDataSet,"Classe");

                  }

                  catch (Exception ex)

                  {

                        lblMessage.Text
= ex.Message;

                       //exit;

                 }

                  //Bind to grid

                  try

                  {

                        grdNames.DataSource
= objDataSet;

                        grdNames.DataMember
= "Classe";

                        grdNames.DataBind();

                  }

                  catch (Exception
ex)

                  {

                        lblMessage.Text = ex.Message;

                        //Exit;

                  }

/////////////
merci pour votre aide!!

4 réponses

Messages postés
794
Date d'inscription
vendredi 24 septembre 2004
Statut
Membre
Dernière intervention
19 août 2008
9
C'est normal, dans le 2em bloc "try", tu assigne objDataSet a une variable. Hors, si le premier try echoue sur le "new DataSet", ta variable objDataSet ne sera pas initialisée lors du second try (elle vaudra null).

Pour supprimer cette erreur, tu peux par exemple initialiser explicitement objDataSet à null au tout début de la fonction, puis tester dans le 2em try en faisant : "if(objDataSet != null) { [le reste de ton code]}.
Ou bien alors réorganise ton code pour n'avoir qu'un seul bloc try...

<hr size="2" width="100%" />Working as designed
Messages postés
427
Date d'inscription
mercredi 1 octobre 2003
Statut
Membre
Dernière intervention
29 janvier 2008
1
 DataSet objDataSet;//= new DataSet("root");

> rajoute DataSet objDataSet null;

et sa va compilé ;)

-------------------------------------------http://quoideneufaujourdhui.spaces.live.com
Messages postés
7
Date d'inscription
mercredi 19 octobre 2011
Statut
Membre
Dernière intervention
9 mai 2012
2
SVP , j'a presque même problème : Utilisation d'une variable locale non assignée 'TAB'

voila mon code , juste j'ai crée une méthode dans une classe pour connaitre si la personne et un stagiaire ou condidat etc , et j'ai vraiment besoin de récupérer le champ (TAB)
merci pour votre aide .




public string recherches(string champ ,string val)
{


string TAB ;
SqlConnection Connecter = new SqlConnection();
Connecter.ConnectionString = ("data source= GLINFO-PC ; DATABASE=GRH2 ;Integrated Security=True;");


Connecter.Open();
SqlCommand Sql = new SqlCommand("select * from PERSONNE ", Connecter);
SqlDataReader dr;
dr = Sql.ExecuteReader();

while (dr.Read())
{

if
(dr[champ].ToString() == val) && (dr["TYPE_PERSONNE"].ToString() == "Condidat"))
{
TAB = "PERSONNE_CONDIDAT";

selectBD("PERSONNE_CONDIDAT");



}
}

return TAB;
///// l'erreur ici : Utilisation d'une variable locale non assignée 'TAB'
Messages postés
834
Date d'inscription
samedi 15 novembre 2008
Statut
Membre
Dernière intervention
14 janvier 2017
30
Bonjour aminescm

C'est en effet le même probleme, ta variable TAB est déclarée mais non initialisée.
Elle est ensuite affectée dans le corps d'un if {}, mais si la condition n'est pas satisfaite, alors elle n'a aucune valeur.

il faut donc soit l'initialisée dès le début
string TAB=string.Empty;


soit dans le else du if.
if (...)
{
  TAB = "PERSONNE_CONDIDAT"; 
...
}
else
{
  TAB = string.Empty; //ou autre chose ;-)
}

Bob.
C# is amazing, enjoy it!