Récupérer la valeur d'un enregistrement

geii82 Messages postés 25 Date d'inscription mardi 18 avril 2006 Statut Membre Dernière intervention 26 mai 2006 - 26 mai 2006 à 10:37
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 - 26 mai 2006 à 11:46
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

MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
26 mai 2006 à 10:46
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# 
0
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
26 mai 2006 à 11:00
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# 

   
0
geii82 Messages postés 25 Date d'inscription mardi 18 avril 2006 Statut Membre Dernière intervention 26 mai 2006
26 mai 2006 à 11:23
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 !
0
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
26 mai 2006 à 11:46
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# 
0
Rejoignez-nous