Récupérer la valeur d'un enregistrement

Signaler
Messages postés
25
Date d'inscription
mardi 18 avril 2006
Statut
Membre
Dernière intervention
26 mai 2006
-
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
-
Bonjour j'aimerai récupérer la valeur d'un enregistrement dans une table que je crée et que je rempli sans utiliser de datagrid.
Voici ma fonction :

            string sConnexionLocal = @"Data Source=Test.sdf";
            SqlCeConnection SqlCnx = new SqlCeConnection(sConnexionLocal);
            string sSQL = "SELECT Adresse_de_pose FROM table_1";
            SqlCeCommand SqlCommand = new SqlCeCommand(sSQL, SqlCnx);
            SqlCnx.Open();
            SqlCommand.Prepare();
            SqlCommand.ExecuteNonQuery();
            label1.Text = sSQL;

Je pense que la requete sql s'effectue normalement mais le problème est que je ne récupère pas la valeur de l'enregistrement dans sSQL, a la place le sSQL reçoit "SELECT Adresse_de_pose FROM table_1" lol
quelqu'un peut m'indiquer comment récupérer cete valeur svp ?
merci ;)

4 réponses

Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
54
Salut,

Deja si tu fais un Select, tu dois plutot utiliser ExecuteScalar() ou ExecuteReader(), selon si tu attends un ou plusieurs resultats en retour (et pas ExecuteNonQuery())
Ensuite, tu ne vas pas recupere la valeur dans ta chaine sSQL, il faut que tu recuperes la valeur que ExecuteScalar() ou ExecuteReader() te retournent (un object pour ExecuteScalar() ou un DataReader pour ExecuteReader() )

Mx
MVP C# 
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
54
Voila un exemple avec ExecuteReader() et ExecuteScalar()
Tu n'as plus qu'a adapter (j'ai utilisé des SqlConnection plutot que des SqlCeConnection)

<hr />

public
void Exemple()
{

   string sConnexionLocal =
@"Data Source=Test.sdf";

   string sSQL =
"SELECT Adresse_de_pose FROM table_1";

   //Pour plusieurs valeurs
   using (
SqlConnection connection =
new
SqlConnection(sConnexionLocal))
   {

      try
      {
         connection.Open();

         // Si tu as plusieurs valeurs a lire
         using (
SqlCommand cmd = connection.CreateCommand())
         {
            cmd.CommandText = sSQL;

            using (
SqlDataReader reader = cmd.ExecuteReader())
            {

               while (reader.Read())
               {

                  Console.WriteLine(reader[
"Adresse_de_pose"].ToString());
               }
               reader.Close();
            }
         }

         // Si tu n'as qu'une valeur a lire
         using(
SqlCommand cmd = connection.CreateCommand())
         {
            cmd.CommandText = sSQL;

            Console.WriteLine(cmd.ExecuteScalar().ToString());
          }
               }

      catch (
SqlException se) 
      { 

         //Traitement de l'exception
      }
   }
}
<hr />

Mx
MVP C# 

   
Messages postés
25
Date d'inscription
mardi 18 avril 2006
Statut
Membre
Dernière intervention
26 mai 2006

Voila j'ai essayé sa donc :

 public void Exemple()
{
   string sConnexionLocal = @"Data Source=Test.sdf";
   string sSQL = "SELECT Adresse_de_pose FROM table_1";
   //Pour plusieurs valeurs
   using (SqlCeConnection connection = new SqlCeConnection(sConnexionLocal))
   {
      try
      {
         connection.Open();

         // Si tu n'as qu'une valeur a lire
         using( SqlCeCommand cmd = connection.CreateCommand())
         {
            cmd.CommandText = sSQL;
            Console.WriteLine(cmd.ExecuteScalar().ToString());
          }
               }
      catch (SqlCeException se)
      {
         //Traitement de l'exception
      }
   }

Mais il ne se passe rien, je comprend pas trop ou vas etre stoqué la valeur lue.             Console.WriteLine(cmd.ExecuteScalar().ToString()); cette ligne execute la commande non ?
Ou est ce que je trouve le resultat ? merci !
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
54
Comme j'ai préciser, c'est un exemple a adapter.
Console.WriteLine ecrit la valeur dans la console... donc si tu as une application Winform sous Windows CE, tu ne verras rien ;)

Remplace la ligne par label1.Text = (string)cmd.ExecuteScalar();

Mx
MVP C#