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 :

Probleme de remplissage d'un DataTable à partir d'une procédure stockée


Sujet :

ASP.NET

  1. #1
    Nouveau membre du Club
    Inscrit en
    Octobre 2007
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 35
    Points : 28
    Points
    28
    Par défaut Probleme de remplissage d'un DataTable à partir d'une procédure stockée
    bonjour, je lance une procédure stockée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    DataTable dt_MaDataTable = new DataTable()
    SqlDataAdapter adapter = new SqlDataAdapter( command );
    adapter.Fill( MaDataTable );
    cela ne peuple pas mon DataTable (pareil avec un dataset) et ne genere pas d'erreur. Pourtant je sais que cela renvoie des résultats.
    Si je passe via un ExecuteReader, je recupere bien quelque chose
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Dim dr As SqlDataReader = command.ExecuteReader()
    Quelqu'un pourrait m'aider ??

  2. #2
    Rédacteur

    Avatar de Jérôme Lambert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2003
    Messages
    4 451
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 451
    Points : 14 357
    Points
    14 357
    Par défaut
    As tu testé ta requête ? Elle te renvoie bien un ensemble de lignes comme résultat ? Elle nécessite des paramètres ?
    Jérôme Lambert
    Développeur, Architecte, Rédacteur & Fan technologies Microsoft
    Ma boite informatique | Mon profil LinkedIn

  3. #3
    Nouveau membre du Club
    Inscrit en
    Octobre 2007
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 35
    Points : 28
    Points
    28
    Par défaut
    Oui elle est bonne je l'ai testée.
    Quand je la teste via un ExecuteReader, elle me renvoie 4 enregistrements. ???

  4. #4
    Rédacteur

    Avatar de Jérôme Lambert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2003
    Messages
    4 451
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 451
    Points : 14 357
    Points
    14 357
    Par défaut
    Je suppose que tu spécifies bien que ta commande est de type procédure stockée ? La question est sûrement bète car si c'était pas le cas, il me semble que tu aurais une exception
    Jérôme Lambert
    Développeur, Architecte, Rédacteur & Fan technologies Microsoft
    Ma boite informatique | Mon profil LinkedIn

  5. #5
    Nouveau membre du Club
    Inscrit en
    Octobre 2007
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 35
    Points : 28
    Points
    28
    Par défaut
    Pas de probleme de ce coté là. Cela ne marcherait pas sinon avec un executeReader

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    231
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2004
    Messages : 231
    Points : 165
    Points
    165
    Par défaut
    Autre question bete, quand tu dis que tu n'as pas d'erreur, es tu sûr que tu n'as pas un try catch qui te trompes là dessus ?

  7. #7
    Rédacteur

    Avatar de Jérôme Lambert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2003
    Messages
    4 451
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 451
    Points : 14 357
    Points
    14 357
    Par défaut
    Autre question, vu que tu dis ne pas avoir d'erreur ; en mode debug, est-ce que ton datatable a bien 0 ligne ? (il suffit de survoler ton objet datatable et de cliquer sur la petite loupe pour avoir un aperçu du contenu.
    Jérôme Lambert
    Développeur, Architecte, Rédacteur & Fan technologies Microsoft
    Ma boite informatique | Mon profil LinkedIn

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    262
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 262
    Points : 95
    Points
    95
    Par défaut
    Ci-joint mon code :
    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
     
                #region declaration
     
                Connexion cn;
                SqlCommand cm;
                SqlTransaction trans = null;
                SqlDataAdapter da;
                #endregion
     
                try
                {
                    this.m_strDescriptionErreur = "";
                    //  Ouverture de la connexion
                    cn = new Connexion();
     
                    if (cn.OuvrirConnexion())
                    {
                        #region execution de la procédure stockée procGestionApplication_ListeNiveaux
                        // Création de la transaction
                        trans = cn.ConnexionActive.BeginTransaction();
                        //  Création de la commande de mise à jour
                        cm = new SqlCommand();
                        cm.CommandType = CommandType.StoredProcedure;
                        cm.Transaction = trans;
                        cm.Connection = cn.ConnexionActive;
                        cm.CommandText = "procGestionApplication_ListeNiveaux";
                        // Liste des paramètres
                        //  @ID_Niveau		int	Identifiant 
                        //  @ProfondeurLimite	int	Profondeur
     
                        cm.Parameters.Add(new SqlParameter("@ID_Niveau", SqlDbType.Int, 4));
                        cm.Parameters.Add(new SqlParameter("@ProfondeurLimite", SqlDbType.Int, 4));
     
                        //  Initialisation des paramètres en entrée
                        cm.Parameters["@ID_Niveau"].Value = m_intIdNiveau;
                        cm.Parameters["@ProfondeurLimite"].Value = m_intProfondeur + p_intProfondeur;
     
                        // Execution de la requete bug
                        p_dtb_ListeNiveaux = new DataTable();
                        da = new SqlDataAdapter(cm);
                        da.Fill(p_dtb_ListeNiveaux);
     
     
                        //SqlDataReader toto;
                        //toto = cm.ExecuteReader();
                        //toto.Close();
     
                        // Validation de la transaction
                        trans.Commit();
                        // Fermeture de la connexion
                        cn.FermerConnexion();
                        return true;
                        #endregion
                    }
                    #region erreur connexion
                    else
                    {
                        // Récupération e l'erreur d'ouverture de la connexion
                        this.m_strDescriptionErreur = cn.DescriptionErreur;
                        return false;
                    }
                    #endregion
     
                }
                #region catch
                catch (Exception ex)
                {
                    // Annulation de la transaction si elle est ouverte
                    if (trans != null) trans.Rollback();
                    // Récupération de l'erreur d'ouverture de la connexion
                    this.m_strDescriptionErreur = ex.Message;
                    return false;
                }
                #endregion
                #region finally
                finally
                {
                    cm = null;
                    trans = null;
                    cn = null;
                }
                #endregion
            }
    Oui j'ai bien 0 ligne dans ma datatable.

  9. #9
    Rédacteur

    Avatar de Jérôme Lambert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2003
    Messages
    4 451
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 451
    Points : 14 357
    Points
    14 357
    Par défaut
    Citation Envoyé par Cardi Voir le message
    Elle nécessite des paramètres ?
    Je vois que tu en as... As tu essayé d'exécuter ta requête sous SqlServer en utilisant les mêmes valeurs de paramètres utilisées lors de l'exécution de ton code ? Ca te donne bien des tuples sous Sql Server ?
    Jérôme Lambert
    Développeur, Architecte, Rédacteur & Fan technologies Microsoft
    Ma boite informatique | Mon profil LinkedIn

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    262
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 262
    Points : 95
    Points
    95
    Par défaut
    oui.
    Cela me donne ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    [dbo].[procGestionApplication_ListeNiveaux] en cours d'exécution ( @ID_Niveau = 3, @ProfondeurLimite = 3 ).
     
    ID_NIVEAU   NOM                                                PROFONDEUR  
    ----------- -------------------------------------------------- ----------- 
    6           MonNiveau1ParArnoM                                 3           
    7           MonNiveau1ParArnoM                                 3           
    8           MonNiveau1ParArnoM                                 3           
    9           MonNiveau1ParArnoM                                 3           
    (4 ligne(s) affectée(s))
    (4 ligne(s) retournée(s)
    @RETURN_VALUE = 0
    Exécution de [dbo].[procGestionApplication_ListeNiveaux] terminée.

Discussions similaires

  1. Réponses: 5
    Dernier message: 09/02/2009, 13h27
  2. [MySQL] Récupération d'une valeur à partir d'une procédure stockée
    Par spaukensen dans le forum PHP & Base de données
    Réponses: 14
    Dernier message: 22/03/2008, 12h14
  3. Réponses: 0
    Dernier message: 21/12/2007, 12h15
  4. Réponses: 8
    Dernier message: 07/09/2006, 11h43
  5. Réponses: 7
    Dernier message: 02/11/2005, 11h28

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