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 :

[C#] Conversion implicite de type object vers int


Sujet :

C#

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 81
    Points : 43
    Points
    43
    Par défaut [C#] Conversion implicite de type object vers int
    Bonjour,

    je suis tout neuf sous .Net, mais a force de lire des tas de docs dans tous les coins je me suis dit qu'il fallait bien commencer à developper.

    J'ai un probleme avec une petite appli que je developpe, cette appli va chercher des infos dans une table d'une bdd mysql. J'utilise un DSN pour y acceder, j'utilise donc les adaptater, les dataset et les datatable.
    Un moment dans le code je fais:
    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
    // Creation de la requete
                    string maRequete = "SELECT * FROM gp_utilisateurs WHERE nom='" + txtNom.Text + "' AND motdepasse='" + txtMotdePasse.Text + "' AND status='0'";
                    MessageBox.Show(maRequete);
                    // Creation du DataSet (Qui est une table des resultats des requetes)
                    DataSet dsUtilisateur = new DataSet();
     
                    // Creation du DataOdbcAdapter (qui fait le lien entre la connexion et le dataSet)
                    OdbcDataAdapter adapter = new OdbcDataAdapter(maRequete, connect);
     
                    // Remplissage du DataSet
                    adapter.Fill(dsUtilisateur);
     
                    //On declare la table tUtilisateurs comme etant la 1ere table du dataset
                    DataTable tUtilisateurs = dsUtilisateur.Tables[0];
     
                    // Affichage d'un message en fonction du resultat de la recherche
                    if (tUtilisateurs.Rows.Count >= 1)
                    {
     
     
                        int monid = tUtilisateurs.Rows[0][0].ToString(); // MON ERREUR!!!!!!!
                        Utilisateur monUtilisateur = new Utilisateur(monid);
     
                        MessageBox.Show("L'utilisateur existe");
                        this.Close();                    
                    }
                    else
                    {
                        MessageBox.Show("L'utilisateur n'existe pas");
                    }
    Je comprends l'erreur, dans l' MSDN il est bien indique qu'on ne peut pas convertir un string en int. J'ai donc tente de faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int monid = (int)tUtilisateurs.Rows[0].[0];
    Mais j'ai une exception m'indiquant que "Le cast spécifié n'est pas valide."

    Alors je vous l'demande, qu'est ce que dois je faire?

    Merci et bonne annee!

    Alex

  2. #2
    Rédacteur
    Avatar de dev01
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 451
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 451
    Points : 6 017
    Points
    6 017
    Par défaut
    Citation Envoyé par alexking2005
    Alors je vous l'demande, qu'est ce que dois je faire?
    Salut .

    Tu doit commencer par :

    - Vérifier que c'est bien un int qui est stocké ...
    - Utiliser la classe Convert

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    if (tUtilisateurs.Rows.Count >= 1)
                    {
     
     
                        int monid = Convert.ToInt(tUtilisateurs.Rows[0][0].ToString()); // MON ERREUR!!!!!!!
                        Utilisateur monUtilisateur = new Utilisateur(monid);
     
                        MessageBox.Show("L'utilisateur existe");
                        this.Close();                    
                    }

    Normalement ça doit passer.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 81
    Points : 43
    Points
    43
    Par défaut
    Ho ben tiens!

    merci beaucoup ca marche, mais j'ai du ecrire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int monid = Convert.ToInt16(tUtilisateurs.Rows[0][0].ToString());

    J'avais verifie le type avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MessageBox(tUtilisateurs.Rows[0][0].GetType.ToString());
    J'avais vu que c'etait un int64.

    Alors pourquoi ta méthode fonctionne et pas la mienne?

  4. #4
    Rédacteur
    Avatar de dev01
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 451
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 451
    Points : 6 017
    Points
    6 017
    Par défaut
    Citation Envoyé par alexking2005
    Ho ben tiens!

    merci beaucoup ca marche, mais j'ai du ecrire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int monid = Convert.ToInt16(tUtilisateurs.Rows[0][0].ToString());
    Tu devrai utiliser Convert.ToInt32 a la place du int 16 (le nombre derriere le int indique le nombre de bit. dans ta base c'est int 64 ...) ou utiliser Int64 à la place de int

    Citation Envoyé par alexking2005
    Alors pourquoi ta méthode fonctionne et pas la mienne?
    Parce que Convert ne fait que un cast mais vérifie également le type, fait un trim sur les string et ainsi de suite ...

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 81
    Points : 43
    Points
    43
    Par défaut
    Ok merci encore et bonne année!

  6. #6
    Membre confirmé

    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    481
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 481
    Points : 616
    Points
    616
    Par défaut
    bonjour alexking2005,
    Si tu as eu une réponse satisfaisante a ta question merci d'utiliser le flag en bas de page.
    Par avance Merci et bonne année

    Notalp

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

Discussions similaires

  1. Delphi 7, Conversion de type Shortstring vers int
    Par Marc_3 dans le forum Langage
    Réponses: 6
    Dernier message: 30/09/2013, 12h34
  2. Désactivation des conversions implicites de types
    Par Scorpi0 dans le forum PL/SQL
    Réponses: 1
    Dernier message: 24/03/2009, 10h28
  3. Conversion d'un type string vers date
    Par projetM dans le forum Développement de jobs
    Réponses: 1
    Dernier message: 27/11/2008, 14h09
  4. Conversion d'un type Delphi vers C
    Par ambessa dans le forum C
    Réponses: 3
    Dernier message: 08/07/2008, 09h36
  5. conversion d'un type Extended vers un string
    Par matterazzo dans le forum Langage
    Réponses: 2
    Dernier message: 28/10/2005, 19h22

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