IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

problème avec ExecuteReader [Débutant]


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 89
    Par défaut problème avec ExecuteReader
    bonjour ,
    je veux afficher un champ de ma table dans un label mais ça fonctionne pas avec cette méthode !! quelqu'un peut il m'aider SVP !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    using System.Data.Sql;
    using System.Data.SqlClient;
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
     
    public partial class Deffilement : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
        SqlConnection con = new SqlConnection(@"Data Source=MOUAD-PC\SQLEXPRESS;Initial Catalog=form;Integrated Security=True");
        SqlCommand cmd = new SqlCommand();
        cmd.Connection = con;
        cmd.CommandText = "SELECT descr FROM siteform where urgence='urgent'";
        con.Open();
        Label2.Text=cmd.ExecuteReader().ToString();
     
        con.Close();
        }
    }
    quand j'éxécute la page web j'ai comme message dans le label "System.Data.SqlClient.SqlDataReader " !!! MErci

  2. #2
    Invité
    Invité(e)
    Par défaut
    Il faut juste comprendre la ligne sivante :
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    Label2.Text=cmd.ExecuteReader().ToString();

    la méthode cmd.ExecuteReader() renvoie un objet de type SqlDataReader qui est classe. Par la suite tu fais appel à la méthode ToString() qui pour tous les types références qui n'ont pas redéfini la méthode ToString de la classe de base object verront cette méthode renvoyer uniquement le type de l'objet donc le nom de la classe incluant l'espace de nom.

    Pour ton code fonctionne il faut que tu récupères l'objet SqlDataReader renvoyé, puis tu le parcours ligne par ligne et tu accèdes à chaque colonne en utilisant l'indexeur de ton objet. Sinon vu que j'ai l'impression que tu t'attends à un seul résultat tu peux penser à la méthode ExecuteScalar.
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    using (SqlConnection con = new SqlConnection(@"Data Source=MOUAD-PC\SQLEXPRESS;Initial Catalog=form;Integrated Security=True"))
    {
        SqlCommand cmd = new SqlCommand();
        cmd.Connection = con;
        cmd.CommandText = "SELECT descr FROM siteform where urgence='urgent'";
        con.Open();
     
        // 1ère solution
        SqlDataReader reader = cmd.ExecuteReader();
        while (reader.Read())
        {
            Label2.Text = reader[0].ToString();
     
            // ou
            // Label2.Text = reader["descr"].ToString();
     
            // ou 
            // Label2.Text = reader.GetString(0);
        }
     
        // Fin 1ère solution
     
        // 2ème solution
        object val = cmd.ExecuteScalar();
        Label2.Text = val == null ? string.Empty : value.ToString();
        // Fin 2ème solution
     
     
        con.Close();
    }

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 89
    Par défaut
    Bonjour
    Merci pour vos efforts , ça marche très bien la solution mais la méthode indiquée retourne juste la dernière ligne ça veut dire une seule réponse ! par contre la requête renvoie plusieurs réponses !

    Et si je fais un : Select * from siteform ; pour toute la table , est ce que je peux récupérer les résultats et les insérer dans un label sous forme d'une seule ligne ? comme ceci :
    Date.0 Name.0 Urgence.0 Descr.0 / Date.1 Name.1 Urgence.1 Descr.1 / Date.2 Name.2 Urgence.2 Descr.2/ ... Date.n Name.n Urgence.n Descr.n

    je veux les mettre dans un label à l"intérieur d'un scroller !!
    Je vous remercie infiniment pour votre aide !

  4. #4
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2013
    Messages : 13
    Par défaut
    En t'inspirant de la solution de h2s84, tu as de quoi réaliser ce que tu souhaites ... Ce n'est qu'une question de concaténation après !

    Par contre je vois pas vraiment l'intérêt de TOUT mettre dans un seul et même label, qui sera très vite illisible ...

  5. #5
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Billets dans le blog
    3
    Par défaut
    Pourquoi ne pas envisager l'utilisation d'un GridView ou d'un Repeater ?
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  6. #6
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 89
    Par défaut
    Oui c'est vrai j'ai pensé à un Gridview mais le problème il a le format d'un tableau ! moi je veux bien faire apparaître les données dans la même ligne , après je vais les faire défiler avec des scripts : l'idée c'est de montrer je que j'ai dans ma table aux utilisateurs comme les news qui se défilent en bas dans les chaines des news vous voyez !

  7. #7
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 89
    Par défaut
    j'ai concaténé les colonnes mais j'obtiens toujours la dernière ligne et non pas toutes les lignes rassemblées dans le même label ! pour que je puisse les défiler après !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
      SqlConnection con = new SqlConnection(@"Data Source=MOUAD-PC\SQLEXPRESS;Initial Catalog=form;Integrated Security=True");
            SqlCommand cmd = new SqlCommand();
            cmd.Connection = con;
            cmd.CommandText = "SELECT * FROM siteform ";
            con.Open();
            SqlDataReader reader = cmd.ExecuteReader();
     
            while (reader.Read())
            {
     
                Label1.Text = reader[0].ToString() + "///" + reader[1].ToString()+ "///" + reader[2].ToString() + "///" +reader[3].ToString();
     
     
            }
            con.Close();

  8. #8
    Membre Expert Avatar de meziantou
    Homme Profil pro
    autre
    Inscrit en
    Avril 2010
    Messages
    1 223
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : autre
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2010
    Messages : 1 223
    Par défaut
    Citation Envoyé par coolmomodu31 Voir le message
    j'ai concaténé les colonnes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    while (reader.Read())
            {
     
                Label1.Text = reader[0].ToString() + "///" + reader[1].ToString()+ "///" + reader[2].ToString() + "///" +reader[3].ToString();
     
     
            }
    Tu concatènes les colonnes mais pas les lignes

  9. #9
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 89
    Par défaut
    Citation Envoyé par meziantou Voir le message
    Tu concatènes les colonnes mais pas les lignes
    j'ai pas compris se que tu veux dire avec cela ??

  10. #10
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2013
    Messages : 13
    Par défaut
    Citation Envoyé par coolmomodu31 Voir le message
    j'ai pas compris se que tu veux dire avec cela ??
    Ta question est pourquoi mon label ne prend-il que le dernier enregistrement ?? si j'ai bien compris.

    Et bien c'est logique, car si tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Label1.Text = reader[0].ToString() + "///"
    A chaque fois que ton executeReader 'read' ( = à chaque nouvel enregistrement) tu remplaces la valeur COMPLETE de Label1.Text

    Là tu as bien la concaténation de tes champs, et pour avoir également la concaténation de tous tes enregistrement, il faut donc concaténer la valeur Label1.Text (logique ?!). Ainsi à chaque passage dans le while, la valeur de Label1.Text devra être
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Label1.Text = Label1.text + reader[0].ToString() + "///" + reader[1].ToString()+ "///" ...
    Voilà

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] Problème avec "ExecuteReader"
    Par redouane.khaldi dans le forum Général Dotnet
    Réponses: 3
    Dernier message: 07/02/2013, 15h01
  2. probléme avec ExecuteReader
    Par tun_code dans le forum VB.NET
    Réponses: 1
    Dernier message: 11/10/2012, 11h57
  3. Problème de connexion avec ExecuteReader()
    Par bigzouzou dans le forum Développement Web avec .NET
    Réponses: 2
    Dernier message: 07/11/2011, 14h26
  4. [C#]Problème OleDbCommand.ExecuteReader avec BdD Access
    Par Renesis57 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 24/09/2006, 18h36
  5. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo