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 :

Problème de Cast lors de la récupération d'une donnée


Sujet :

C#

  1. #1
    Membre à l'essai
    Inscrit en
    Juillet 2009
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 22
    Points : 10
    Points
    10
    Par défaut Problème de Cast lors de la récupération d'une donnée
    Bonjour,

    Je souhaite me connecter à ma BDD et récupérer la valeur renvoyér par un select, et l'afficher dans un textBox.
    Voici 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
     
    string sql=string.Empty;
     
    sql="SELECT count(...) ...";
    // Cette procédure, testée directement dans la BDD me renvoie la valeur 5.
     
    Oracle.DataAccess.Client.OracleConnection con;
    DAL.AccessData.OpenConnection(out con);
    Oracle.DataAccess.Client.OracleDataReader dr;
     
    dr=DAL.AccessData.ExecuteDataReader(sql,con);
     
    if(dr.Read())
    { 
     TextBox1.Text=Convert.ToString(dr.GetInt16(0));
     
    }
    L'erreur qui m'est renvoyée est la suivante :
    Cast spécifié non valide
    J'ai aussi tenté
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    TextBox1.Text=dr.GetString(0);
    Mais la même erreur d'affiche

    Merci pour votre aide.

  2. #2
    Expert éminent
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Points : 7 660
    Points
    7 660
    Par défaut
    SELECT COUNT ça renvoi un entier et pas une chaîne, d'où l'erreur. Mais pour ce type de requête oublie la méthode ExecuteDataReader et regarde plutôt la méthode ExecuteScalar.

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2005
    Messages
    700
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Juin 2005
    Messages : 700
    Points : 488
    Points
    488
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Convert.ToString(dr.GetInt16(0));
    equivaut à un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dr.GetInt16(0).ToString();
    non?

    Dans ce cas là j'avous moi aussi ne pas comprendre pourquoi il a cette erreure...

    Interressant le tuyau pour ExecuteScalar, je m'y pencherai à l'occase...

  4. #4
    Expert éminent
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Points : 7 660
    Points
    7 660
    Par défaut
    J'ai effectivement raté un morceau, j'avais juste vu le GetString. J'ai été trop vite sur ce coup là.

    Donc l'erreur c'est parce que SELECT COUNT renvoi un entier sur 4 octets (type int en SQL), pas sur 2 (type smallint en SQL). Donc il faudrait faire un GetInt32. Mais le mieux reste l'utilisation de la méthode ExecuteScalar.

  5. #5
    Membre à l'essai
    Inscrit en
    Juillet 2009
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 22
    Points : 10
    Points
    10
    Par défaut
    D'accord! Je vais corriger ça alors et voir ce que ca donne, merci beaucoup !!

    Et merci pour le conseil, je penserais au ExecuteSclar dorénavant, je ne connsaissais pas cette méthode.

    merci encore

  6. #6
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2005
    Messages
    700
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Juin 2005
    Messages : 700
    Points : 488
    Points
    488
    Par défaut
    de mémoire, il y a une fonction pour connaitre le type et ne pas rater le coche.

    un truc du genre :

    dr.GetCellType(0)

  7. #7
    Membre à l'essai
    Inscrit en
    Juillet 2009
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 22
    Points : 10
    Points
    10
    Par défaut
    Citation Envoyé par gazella Voir le message
    D'accord! Je vais corriger ça alors et voir ce que ca donne, merci beaucoup !!

    Et merci pour le conseil, je penserais au ExecuteSclar dorénavant, je ne connsaissais pas cette méthode.

    merci encore
    ça a marché, merciii !!!

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 15/09/2011, 11h39
  2. [MySQL] Problème d'accent lors de la récupération d'infos
    Par 2rock dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 03/05/2009, 18h08
  3. Réponses: 8
    Dernier message: 06/06/2007, 17h03
  4. [MySQL] problème de caractères lors de la récupération des données
    Par lecail65 dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 02/08/2006, 16h45
  5. Réponses: 2
    Dernier message: 09/03/2006, 15h24

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