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

Windows Forms Discussion :

Problème SqlDataReader ProcédureStockée


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 143
    Par défaut Problème SqlDataReader ProcédureStockée
    Bonsoir, j'ai une erreur "Le cast spécifié n'est pas valide" lorsqu'il arrive à LEC.Add dans le code suivant :
    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
            public static List<ListeEmpruntsClient> VoirEmpruntsClient(int clientId)
            {
                List<ListeEmpruntsClient> LEC = new List<ListeEmpruntsClient>();
                SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["TFEBibliConnectionString"].ToString());
                SqlCommand comm = con.CreateCommand();
                comm.CommandType = CommandType.StoredProcedure;
                comm.CommandText = "VoirEmpruntsClient";
     
                SqlParameter param = comm.CreateParameter();
                param.ParameterName = "@ClientId";
                param.Value = clientId;
                param.DbType = DbType.Int32;
                comm.Parameters.Add(param);
     
                con.Open();
                try
                {
                    SqlDataReader r = comm.ExecuteReader();
                    while (r.Read())
                        LEC.Add(new ListeEmpruntsClient(r.GetGuid(0), r.GetDateTime(1), r.GetDateTime(2), r.GetBoolean(3),
                            r.GetDecimal(4), r.GetInt32(5), r.GetString(6), r.GetInt32(7), r.GetString(8), r.GetInt32(9),
                            r.GetString(10)));
                    return LEC;
                }
                catch
                {
                    throw new Exception("Erreur de lecture des emprunts du client.");
                }
                finally
                {
                    con.Close();
                }
            }
    D'habitude j'arrive à trouver l'erreur, mais là je coince.

    Voici la procédure stockée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    ALTER PROCEDURE dbo.VoirEmpruntsClient
    (
    	@ClientId INT
    )
    AS
    SELECT EMPRUNT.Id, EMPRUNT.DateEmprunt, EMPRUNT.DateRetour, EMPRUNT.EstRendu, EMPRUNT.Amende, EMPRUNT.ClientId,
    	   CLIENT.Nom, EMPRUNT.EmployeId, EMPLOYE.Nom, EMPRUNT.LivreId, LIVRE.Titre FROM EMPRUNT
    INNER JOIN EMPLOYE ON EMPRUNT.EmployeId = EMPLOYE.Id
    INNER JOIN CLIENT ON EMPRUNT.ClientId = CLIENT.Id
    INNER JOIN LIVRE ON EMPRUNT.LivreId = LIVRE.Id
    WHERE EMPRUNT.ClientId = @ClientId
    RETURN
    Et voici la table :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Id	char(36)
    DateEmprunt	datetime
    DateRetour	datetime
    EstRendu	bit
    Amende	money
    EmployeId	int
    ClientId	int
    LivreId	int
    Aucune donnée n'est null.

    Merci d'avance.

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Pour y voir un peu plus clair, il faudrait déjà que tu décomposes un peu ton code au lieu de faire plein de choses dans la même instruction... par exemple :
    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
    while (r.Read())
    {
        Guid r0 = r.GetGuid(0);
        DateTime r1 = r.GetDateTime(1);
        DateTime r2 = r.GetDateTime(2);
        bool r3 = r.GetBoolean(3);
        decimal r4 = r.GetDecimal(4);
        int r5 = r.GetInt32(5);
        string r6 = r.GetString(6);
        int r7 = r.GetInt32(7);
        string r8 = r.GetString(8);
        int r9 = r.GetInt32(9);
        string r10 = r.GetString(10);
        ListeEmpruntsClient a = new ListeEmpruntsClient(r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, r10);
        LEC.Add(a);
    }
    Déjà, comme ça tu verras exactement où ça plante (en mode debug).

    Ensuite, toujours en mode debug, regarde le détail de l'exception dans le catch. Pour ça il faut que tu nommes l'exception, en remplaçant "catch" par "catch(Exception ex)"

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 143
    Par défaut
    Voilà, avec ça j'ai pu voir que l'erreur venait du Guid, en fait je devais mettre String à la place.
    Merci beaucoup.

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

Discussions similaires

  1. Probléme de SqlDataReader sous sql server 2000
    Par locus dans le forum ADO.NET
    Réponses: 3
    Dernier message: 24/01/2012, 16h40
  2. problème Sqldatareader recherche
    Par luchoo dans le forum ASP.NET
    Réponses: 1
    Dernier message: 14/04/2011, 14h48
  3. Problème boucle imbriquée SqlDataReader
    Par xouzi dans le forum C#
    Réponses: 23
    Dernier message: 13/01/2011, 15h48
  4. Problème avec des SQLDataReaders imbriqués
    Par Catsloveuse dans le forum Accès aux données
    Réponses: 0
    Dernier message: 11/05/2010, 10h10
  5. Problème d'installation oracle 8.1.7 sous NT
    Par Anonymous dans le forum Installation
    Réponses: 7
    Dernier message: 02/08/2002, 14h18

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