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

C# Discussion :

SQL Oracle - 'System.InvalidCastException'


Sujet :

C#

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 31
    Points : 24
    Points
    24
    Par défaut SQL Oracle - 'System.InvalidCastException'
    Bonjour à tous,

    Un petite question j'ai un problème sur une requête SQL Oracle, je veux récupérer 3 champs de ma BDD la requete marche parfaite dans Toad ou autre et me renvoie bien les valeurs des 3 champs du select.
    Lorsque j'utilise la requete dans le code c# je récupère l'erreur suivante car la variable du dr.GetString(2) est = null alors qu'il y a bien une data dans la BDD sur ce champ ...

    voici le détail de l'erreur.

    L'exception System.InvalidCastException n'a pas été gérée
    HResult=-2147467262
    Message=Le cast spécifié n'est pas valide.
    Source=Oracle.DataAccess
    StackTrace:
    à Oracle.DataAccess.Client.OracleDataReader.GetString(Int32 i)
    à TherAcc.Form1.getInfoPat() dans c:\Users\j.mondout\Documents\Visual Studio 2013\Projects\TherAcc\TherAcc\Form1.cs:ligne 109
    à TherAcc.Form1.button1_Click(Object sender, EventArgs e) dans c:\Users\j.mondout\Documents\Visual Studio 2013\Projects\TherAcc\TherAcc\Form1.cs:ligne 44
    à System.Windows.Forms.Control.OnClick(EventArgs e)
    à System.Windows.Forms.Button.OnClick(EventArgs e)
    à System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
    à System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
    à System.Windows.Forms.Control.WndProc(Message& m)
    à System.Windows.Forms.ButtonBase.WndProc(Message& m)
    à System.Windows.Forms.Button.WndProc(Message& m)
    à System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
    à System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
    à System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
    à System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
    à System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
    à System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
    à System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
    à System.Windows.Forms.Application.Run(Form mainForm)
    à TherAcc.Program.Main() dans c:\Users\j.mondout\Documents\Visual Studio 2013\Projects\TherAcc\TherAcc\Program.cs:ligne 19
    à System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
    à System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
    à Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
    à System.Threading.ThreadHelper.ThreadStart_Context(Object state)
    à System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
    à System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
    à System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
    à System.Threading.ThreadHelper.ThreadStart()
    InnerException:

    j'ai fait le test en récupérant les data dans un datagrid pas de problème j'ai la data....

    je suis un peu perdu si quelqu'un à une idée.

    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
     OracleConnection OCon = new OracleConnection(oradb);
                OCon.Open();
                OracleCommand cmd = new OracleCommand();
                cmd.Connection = OCon;
                cmd.CommandText = "select NOMPAT,PNOPAT,DATNAI from patien where NUMDOS = '" + numdos + "' ";      //      
                cmd.CommandType = CommandType.Text;
                OracleDataReader dr = cmd.ExecuteReader();
                while (dr.Read())
                {
                    Console.Write(dr.GetString(0));
                    Console.Write(dr.GetString(1));
                    //Console.Write(dr.GetString(2));
                    string nomPat = dr.GetString(0);
                    string pNomPAt = dr.GetString(1);
                    //string dateNaissPat = dr.GetString(2);
                    lbl_nomPat.Text =  dr.GetString(0);
                    lbl_pNomPat.Text = dr.GetString(1);
                    lbl_dateNaiss.Text = dr.GetString(2);
                }
                OCon.Close();
            }

  2. #2
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2012
    Messages : 116
    Points : 158
    Points
    158
    Par défaut
    Si ne je m'abuse, lorsque tu récupères un champs date depuis la data base (ce qui est le cas pour une date de naissance je suppose), alors tu dois récupérer la valeur dans un objet de type date il me semble.

    OracleDataReader fourni un GetDateTime();

    Si tu veux la stocker malgré tout dans une string, tu fait un GetDateTime().ToString();

    Donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    DateTime dateNaissPat = dr.GetDateTime(2);
     
    Ou
     
    string dateNaissPat = dr.GetDateTime(2).ToString();

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 31
    Points : 24
    Points
    24
    Par défaut
    Désolé ... merci beaucoup pour ta réponse rapide.

    Cordialement.

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

Discussions similaires

  1. [PL/SQL - Oracle 9i] CLOB et owa_pattern
    Par rebolon dans le forum Oracle
    Réponses: 9
    Dernier message: 18/11/2004, 16h28
  2. [VB.NET] Erreur System.InvalidCastException
    Par Hoegaarden dans le forum Windows Forms
    Réponses: 5
    Dernier message: 28/09/2004, 12h47
  3. Generer du xml via SQL(oracle) avec de l'asp
    Par jpg dans le forum XQUERY/SGBD
    Réponses: 6
    Dernier message: 03/08/2004, 13h36
  4. [SQL ORACLE] Soustraction de deux timestamps
    Par platinum07 dans le forum SQL
    Réponses: 34
    Dernier message: 02/07/2004, 11h42
  5. PL/SQL ORACLE (Record Dans un Varchar2)
    Par argoet dans le forum PL/SQL
    Réponses: 24
    Dernier message: 14/05/2004, 17h06

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