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

  1. #1
    Membre à l'essai
    besoin d'aide pour récupérer un ID d'une table par un nom
    Bonjour tous le monde,
    je suis en BTS et prépare mon projet de fin d'année qui est la gestion d'une Videotheque.
    Mais j'ai un petit souci quand je veut récupérer le L'id par le nom et prénom d'un acteur voici une image

    J'ai l'erreur suivante

    voici le 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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
        public static int getActeurparnom(string leNom, string lePrenom )
            {
                //initialisation de command
                MySqlCommand command = new MySqlCommand();
                //connection a la base de donnee
                command.Connection = connection;
                MySqlDataReader nbrows1;
                //requete sql 
                int Numero;
                command.CommandText = String.Format("SELECT Numero FROM acteur_realisateur WHERE Nom ='{0}' AND Prenom='{1}'" ,leNom ,lePrenom) ;
                //execution de la  variable et requet
                nbrows1 = command.ExecuteReader();
                nbrows1.Read();
               //initialisation de la variable
              //lecture des lignes dans la base de donnee
             //return 0 si la ligne est vide
                if (nbrows1.IsDBNull(0))
                {
                    Numero = 0;
                }
                //sinon va chercher la valeur 
                else
                {
                    Numero = nbrows1.GetInt32(0);
                }
                //return la valeur
                return Numero;
                //fermeture de la lecture des lignes
                nbrows1.Close();
             //fermeture de la base de donnee
                connection.Close();
            }

    si vous pouviez m'aider ca serai d'une grande aide.
    Cordialement

  2. #2
    Expert éminent sénior
    on ne concatène pas des strings dans une requete, c'est une faille de sécurité grave (voir injection sql), et dans le cas d'un apostrophe contenu dans le string ca plantera
    on ne concatène pas des dates et des décimaux non plus car les formats peuvent changer (ordre pour la date, séparateur de décimal pour les décimaux)
    pour ca il existe les DbParameters, qui permettent de passer les valeurs en tant que variable dans la requete ("... where nom = @nom ...")
    les puristes utilisent toujours des DbParameterrs

    la méthode Read retourne un booléen, s'il vaut false c'est qu'il n'y aucune ligne à lire

    mettre des strings dans un combobox pour ensuite rechercher l'id ce n'est pas top
    .net est objet, dans un combobox au lieu de mettre des string on peut mettre de classes
    si tu as une classe Acteur avec Id, Nom et Prenom tu peux faire en sorte d'afficher nom + " " + prenom (en surchargeant ToString), et en castant le selecteditem tu peux récupérer l'id
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre à l'essai
    voici la combox
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Controleur.LesActeurs = Form1.monControleur.chargerlesacteurs();
                foreach (Acteur em in Controleur.LesActeurs)
                {
     
                  Acteurcombobox.Items.Add(em.GetPrenomacteur()+" "+(em.GetNomacteurs())); 
     
                }