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 :

Erreur: System.IndexOutOfRangeException: CVID


Sujet :

ASP.NET

  1. #1
    Membre régulier
    Inscrit en
    Juin 2006
    Messages
    218
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 218
    Points : 72
    Points
    72
    Par défaut Erreur: System.IndexOutOfRangeException: CVID
    Est-ce que quelqu'un a deja rencontre une erreur pareille ?

    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
     cvid
    Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
    
    Exception Details: System.IndexOutOfRangeException: CVID
    
    Source Error:
    
    Line 55:         protected virtual CVDetails GetCVsFromReader(IDataReader reader, bool readBody)
    Line 56:         {
    Line 57:              CVDetails cv = new CVDetails(
    Line 58:                 (int)reader["CVID"],
    Line 59:                 reader["FirstName"].ToString(),
    
    
    Source File: c:\Documents and Settings\Administrator\My Documents\Visual Studio 2005\WebSites\KoeinProject\App_Code\DAL\CVsProvider.cs    Line: 57

    C'est le code qui contient la ligne d'erreur :


    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
            protected virtual CVDetails GetCVsFromReader(IDataReader reader)
            {
                return GetCVsFromReader(reader, true);
            }
            protected virtual CVDetails GetCVsFromReader(IDataReader reader, bool readBody)
            {
                 CVDetails cv = new CVDetails(
                    (int)reader["CVID"],
                    reader["FirstName"].ToString(),
                    reader["MiddleName"].ToString(),
                    reader["LastName"].ToString(),
                    reader["DateOfBirth"].ToString(),
                    reader["PlaceOfBirth"].ToString(),
                    reader["NationalityAtBirth"].ToString(),
                    reader["MaritalStatus"].ToString(),
                    reader["Sex"].ToString(),
                    null,
                    reader["Education"].ToString(),
                    reader["Address1"].ToString(),
                    reader["Address2"].ToString(),
                    reader["ExpectedSalary"].ToString(),
                    reader["CareerObjective"].ToString(),
                    reader["AvailabilityForWork"].ToString(),
                    reader["PhoneNumber"].ToString(),
                    reader["Languages"].ToString(),
                    reader["ComputerSkills"].ToString(),
                    reader["ImageURL"].ToString());
     
     
                if (readBody)
                    cv.Experience = reader["Experience"].ToString();
     
                return cv;
            }

  2. #2
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Points : 6 334
    Points
    6 334
    Par défaut
    Bah à première vue, la colonne CVID n'existe pas ou est null dans le reader.
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  3. #3
    Membre régulier
    Inscrit en
    Juin 2006
    Messages
    218
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 218
    Points : 72
    Points
    72
    Par défaut
    J'utilise l'architecture 3 tiers (DAL - BLL - Interface utilisateur)

    Je travaille sur une seule table: CV
    J'arrive a faire des insertions mais je n'arrive pas a afficher tous les champs d'un CV dans une page!! et je n'arrive pas a trouver cette erreur!

    Les deux classes suivantes font partie de la couche DAL:

    SqlCVsProvider:
    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
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    using System;
    using System.Data;
    using System.Configuration;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;
    using System.Data.SqlClient;
    using System.Collections.Generic;
    using System.Web.Caching;
     
     
    namespace MB.SiteName.DAL.SqlClient
    {
        public class SqlCVsProvider : CVsProvider
        {
     
            /// Returns a collection with all the CVs
            /// </summary>
            public override List<CVDetails> GetCVs()
            {
                using (SqlConnection cn = new SqlConnection(this.ConnectionString))
                {
                    SqlCommand cmd = new SqlCommand("CVs_GetCVs", cn);
                    cmd.CommandType = CommandType.StoredProcedure;
                    cn.Open();
                    return GetCVCollectionFromReader(ExecuteReader(cmd));
                }
            }
     
            /// Returns an existing CV with the specified ID
     
            public override CVDetails GetCVByID(int cvID)
            {
                using (SqlConnection cn = new SqlConnection(this.ConnectionString))
                {
                    SqlCommand cmd = new SqlCommand("CVs_GetCVByID", cn);
                    cmd.CommandType = CommandType.StoredProcedure;
                    cmd.Parameters.Add("@CVID", SqlDbType.Int).Value = cvID;
                    cn.Open();
                    IDataReader reader = ExecuteReader(cmd, CommandBehavior.SingleRow);
                    if (reader.Read())
                        return GetCVFromReader(reader);
                    else
                        return null;
                }
            }
     
     
            /// Deletes a CV
     
            public override bool DeleteCV(int cvID)
            {
                using (SqlConnection cn = new SqlConnection(this.ConnectionString))
                {
                    SqlCommand cmd = new SqlCommand("CVs_DeleteCV", cn);
                    cmd.CommandType = CommandType.StoredProcedure;
                    cmd.Parameters.Add("@CVID", SqlDbType.Int).Value = cvID;
                    cn.Open();
                    int ret = ExecuteNonQuery(cmd);
                    return (ret == 1);
                }
            }
     
     
            /// Updates a CV
     
            public override bool UpdateCV(CVDetails cv)
            {
                using (SqlConnection cn = new SqlConnection(this.ConnectionString))
                {
                    SqlCommand cmd = new SqlCommand("CVs_UpdateCV", cn);
                    cmd.CommandType = CommandType.StoredProcedure;
                    cmd.Parameters.Add("@CVID", SqlDbType.Int).Value = cv.CVID;
                    cmd.Parameters.Add("@FirstName", SqlDbType.NVarChar).Value = cv.FirstName;
                    cmd.Parameters.Add("@MiddleName", SqlDbType.NVarChar).Value = cv.MiddleName;
                    cmd.Parameters.Add("@LastName", SqlDbType.NVarChar).Value = cv.LastName;
                    cmd.Parameters.Add("@DateOfBirth", SqlDbType.NVarChar).Value = cv.DateOfBirth;
                    cmd.Parameters.Add("@PlaceOfBirth", SqlDbType.NVarChar).Value = cv.PlaceOfBirth;
                    cmd.Parameters.Add("@NationalityAtBirth", SqlDbType.NVarChar).Value = cv.NationalityAtBirth;
                    cmd.Parameters.Add("@MaritalStatus", SqlDbType.NVarChar).Value = cv.MaritalStatus;
                    cmd.Parameters.Add("@Sex", SqlDbType.NVarChar).Value = cv.Sex;
                    cmd.Parameters.Add("@Experience", SqlDbType.NVarChar).Value = cv.Experience;
                    cmd.Parameters.Add("@Education", SqlDbType.NVarChar).Value = cv.Education;
                    cmd.Parameters.Add("@Address1", SqlDbType.NVarChar).Value = cv.Address1;
                    cmd.Parameters.Add("@Address2", SqlDbType.NVarChar).Value = cv.Address2;
                    cmd.Parameters.Add("@ExpectedSalary", SqlDbType.NVarChar).Value = cv.ExpectedSalary;
                    cmd.Parameters.Add("@CareerObjective", SqlDbType.NVarChar).Value = cv.CareerObjective;
                    cmd.Parameters.Add("@AvailabilityForWork", SqlDbType.NVarChar).Value = cv.AvailabilityForWork;
                    cmd.Parameters.Add("@PhoneNumber", SqlDbType.NVarChar).Value = cv.PhoneNumber;
                    cmd.Parameters.Add("@Languages", SqlDbType.NVarChar).Value = cv.Languages;
                    cmd.Parameters.Add("@ComputerSkills", SqlDbType.NVarChar).Value = cv.ComputerSkills;
                    cmd.Parameters.Add("@ImageURL", SqlDbType.NVarChar).Value = cv.ImageURL;
                    cn.Open();
                    int ret = ExecuteNonQuery(cmd);
                    return (ret == 1);
                }
            }
     
     
            /// Creates a new cv
     
            public override int InsertCV(CVDetails cv)
            {
                using (SqlConnection cn = new SqlConnection(this.ConnectionString))
                {
                    SqlCommand cmd = new SqlCommand("CVs_InsertCV", cn);
                    cmd.CommandType = CommandType.StoredProcedure;
     
                    cmd.Parameters.Add("@FirstName", SqlDbType.NVarChar).Value = cv.FirstName;
                    cmd.Parameters.Add("@Middlename", SqlDbType.NVarChar).Value = cv.MiddleName;
                    cmd.Parameters.Add("@LastName", SqlDbType.NVarChar).Value = cv.LastName;
                    cmd.Parameters.Add("@DateOfBirth", SqlDbType.NVarChar).Value = cv.DateOfBirth;
                    cmd.Parameters.Add("@PlaceOfBirth", SqlDbType.NVarChar).Value = cv.PlaceOfBirth;
                    cmd.Parameters.Add("@NationalityAtBirth", SqlDbType.NVarChar).Value = cv.NationalityAtBirth;
                    cmd.Parameters.Add("@MaritalStatus", SqlDbType.NVarChar).Value = cv.MaritalStatus;
                    cmd.Parameters.Add("@Sex", SqlDbType.NVarChar).Value = cv.Sex;
                    cmd.Parameters.Add("@Experience", SqlDbType.NVarChar).Value = cv.Experience;
                    cmd.Parameters.Add("@Education", SqlDbType.NVarChar).Value = cv.Education;
                    cmd.Parameters.Add("@Address1", SqlDbType.NVarChar).Value = cv.Address1;
                    cmd.Parameters.Add("@Address2", SqlDbType.NVarChar).Value = cv.Address2;
                    cmd.Parameters.Add("@ExpectedSalary", SqlDbType.NVarChar).Value = cv.ExpectedSalary;
                    cmd.Parameters.Add("@CareerObjective", SqlDbType.NVarChar).Value = cv.CareerObjective;
                    cmd.Parameters.Add("@AvailabilityForWork", SqlDbType.NVarChar).Value = cv.AvailabilityForWork;
                    cmd.Parameters.Add("@PhoneNumber", SqlDbType.NVarChar).Value = cv.PhoneNumber;
                    cmd.Parameters.Add("@Languages", SqlDbType.NVarChar).Value = cv.Languages;
                    cmd.Parameters.Add("@ComputerSkills", SqlDbType.NVarChar).Value = cv.ComputerSkills;
                    cmd.Parameters.Add("@ImageURL", SqlDbType.NVarChar).Value = cv.ImageURL;
     
                    cmd.Parameters.Add("@CVID", SqlDbType.Int).Direction = ParameterDirection.Output;
                    cn.Open();
                    int ret = ExecuteNonQuery(cmd);
                    return (int)cmd.Parameters["@CVID"].Value;
                }
            }
     
     
     
     
        }
    }
    CvsProvider:

    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
    84
    85
    86
    using System;
    using System.Data;
    using System.Configuration;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;
    using System.Collections.Generic;
     
    namespace MB.SiteName.DAL
    {
     
        public abstract class CVsProvider : DataAccess
        {
            static private CVsProvider _instance = null;
     
            /// Returns an instance of the provider type specified in the config file
     
            static public CVsProvider Instance
            {
                get
                {
                    if (_instance == null)
                        _instance = (CVsProvider)Activator.CreateInstance(
                           Type.GetType(Globals.Settings.CVs.ProviderType));
                    return _instance;
                }
            }
     
            public CVsProvider()
            {
                this.ConnectionString = Globals.Settings.CVs.ConnectionString;
                this.EnableCaching = Globals.Settings.CVs.EnableCaching;
                this.CacheDuration = Globals.Settings.CVs.CacheDuration;
            }
     
            // methods that work with Cvs
            public abstract List<CVDetails> GetCVs(); 
            public abstract CVDetails GetCVByID(int cvID);
            public abstract bool DeleteCV(int cvID);
            public abstract bool UpdateCV(CVDetails cv);
            public abstract int InsertCV(CVDetails cv);
     
            /// Returns a new PRCategoryDetails instance filled with the DataReader's current record data
     
            protected virtual CVDetails GetCVFromReader(IDataReader reader)
            {
               return new CVDetails(
              (int)reader["CVID"],
               reader["FirstName"].ToString(),
               reader["MiddleName"].ToString(),
               reader["LastName"].ToString(),
               reader["DateOfBirth"].ToString(),
               reader["PlaceOfBirth"].ToString(),
               reader["NationalityAtBirth"].ToString(),
               reader["MaritalStatus"].ToString(),
               reader["Sex"].ToString(),
               reader["Experience"].ToString(),
               reader["Education"].ToString(),
               reader["Address1"].ToString(),
               reader["Address2"].ToString(),
               reader["ExpectedSalary"].ToString(),
               reader["CareerObjective"].ToString(),
               reader["AvailabilityForWork"].ToString(),
               reader["PhoneNumber"].ToString(),
               reader["Languages"].ToString(),
               reader["ComputerSkills"].ToString(),
               reader["ImageURL"].ToString());
     
            }
     
     
            /// Returns a collection of CVDetails objects with the data read from the input DataReader
     
            protected virtual List<CVDetails> GetCVCollectionFromReader(IDataReader reader)
            {
                List<CVDetails> cv = new List<CVDetails>();
                while (reader.Read())
                    cv.Add(GetCVFromReader(reader));
                return cv;
            }
        }
     
    }

  4. #4
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Points : 6 334
    Points
    6 334
    Par défaut
    Comme je te l'ai dit, la colonne CVID n'existe pas dans le reader que tu utilises. Vérifie que CVs_GetCVByID renvoie aussi le champ CVID.
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  5. #5
    Membre régulier
    Inscrit en
    Juin 2006
    Messages
    218
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 218
    Points : 72
    Points
    72
    Par défaut
    Je vous remercie !!!!!!!!!! C'etait une erreur dans le "Stored Procedure: GetCVByID" et j'ai pas fait attention que j'ai pas selectionne le CVID !!

    When u're angry, u can't find ur errors lol even though I reviewed the same procedure zillion times !!

    Merci Beaucoup pour votre aide !!

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

Discussions similaires

  1. Erreur sur Datagridview, System.IndexOutOfRangeException index -1
    Par garciajulien dans le forum Windows Forms
    Réponses: 2
    Dernier message: 16/10/2012, 15h08
  2. Réponses: 1
    Dernier message: 17/09/2006, 10h45
  3. Erreur système . Code : 1410 ?
    Par Interruption13h dans le forum C++Builder
    Réponses: 5
    Dernier message: 05/05/2006, 08h59
  4. Erreur systeme
    Par toxyko dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 22/03/2006, 15h51
  5. [VB.NET] Erreur System.InvalidCastException
    Par Hoegaarden dans le forum Windows Forms
    Réponses: 5
    Dernier message: 28/09/2004, 11h47

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