Partage
  • Partager sur Facebook
  • Partager sur Twitter

Pourquoi mes nombre décimal sont toujours a 0

SQL ASP.NET

    9 août 2019 à 18:52:10

    Bonjour

    voici mon problème 

    J'ai une application ASP.NET MVC, j'ai une liste de livre (isbn, auteur, titre, prix, quantité, photo et résumé)  et j'ai créer un formulaire pour pouvoir en ajouter a ma liste
    jusque la ça va, j'arrive a jouter un livre dans ma base de donnée et il s'affiche bien dans ma liste(ma vue) cependant lorsque je met un prix avec un décimal (dans mon modèle le prix est en double) il affiche toujours 0 dans ma base de données et dans ma vue

    exemple, si j'écris 25.50 cela affiche 0

    Comment faire pour que cela affiche le bon prix en décimal? 

    Ceci est ma méthode ajouté de mon controller

     [HttpPost]
            public IActionResult Ajouter(Livre livre)
            {
               
                    //ajouter un client dans la table Clients de la base de données
                    this._context.InsertLivre(livre);
    
                //Sélectionner tout les livres de la table Livres de la base de données  et les afficher dans la vue
                return View("Liste",this._context.SelectLivres());
            }


    et ce ci ma méthode pour insérer un livre dans ma base de donnée

     public void InsertLivre(Livre livre)
            {
                using (SqlConnection con = new SqlConnection(this.ConnectionString))
                {
                    //requete pour ajouter un client dans la table client
                    string sqlStr = "insert into Livres(Isbn, Auteur, Titre, Prix, Quantite, Photo, Resume) " +
                        "values(@isbn,@auteur, @titre, @prix, @quantite, @photo, @resume)";
                    SqlCommand cmd = new SqlCommand(sqlStr, con);
                    cmd.CommandType = CommandType.Text;
                    //ouverture de la connexion
                    con.Open();
                    //donner les valeurs a parametre
                    cmd.Parameters.AddWithValue("isbn", livre.Isbn);
                    cmd.Parameters.AddWithValue("auteur", livre.Auteur);
                    cmd.Parameters.AddWithValue("titre", livre.Titre);
                    cmd.Parameters.AddWithValue("prix", livre.Prix);
                    cmd.Parameters.AddWithValue("quantite", livre.Quantite);
                    cmd.Parameters.AddWithValue("photo", livre.Photo);
                    cmd.Parameters.AddWithValue("resume", livre.Resume);
    
                    //exécuter la requete
                    cmd.ExecuteNonQuery();
                    //fermeture de la connextion
                    con.Close();
                }
            }

    merci

    • Partager sur Facebook
    • Partager sur Twitter
      10 août 2019 à 19:50:29

      est-ce que quelqu'un aurait une idée svp?
      • Partager sur Facebook
      • Partager sur Twitter
        13 août 2019 à 12:25:26

        Salut,

        Il faudrait que tu montres le code où tu mets le prix dans le livre depuis la vue , et celui où tu récupères l'ensemble des livres de la BDD.

        • Partager sur Facebook
        • Partager sur Twitter
          14 août 2019 à 22:11:51

          Bonjour!

          voici le code  ma vue

             @foreach (var item in Model)
                      {
                          <tr>
                              <td>
                                  @item.Isbn
                              </td>
                              <td>
                                  @item.Auteur
                              </td>
                              <td>
                                  @item.Titre
                              </td>
                              <td>
                                  @item.Prix
                              </td>
                              <td>
                                  @item.Quantite
                              </td>
                              <td>
                                  <img src="@Url.Content(item.Photo)" /> <!--Afficher la photo du livre-->
                              </td>
                              <td>
                                  <a href="~/resume/resume.pdf" onclick="window.open(this.href, 'newwindow', 'width=1500, height=1000');return false; " alt="resumé">Afficher</a> <!--Afficher le résumé du livre dans une nouvelle fenêtre-->
                              </td>
                              <td>
          
                                  <a asp-action="Supprimer" asp-Controller="Admin" asp-route-id="@item.Isbn">Supprimer</a> <!--supprimer un livre de la liste-->
                              </td>
                          </tr>
                      }

          et ceci est mon code qui récupère les livres dans ma base de données

           public List<Livre> SelectLivres()
                  {
                      using (SqlConnection con = new SqlConnection(this.ConnectionString))
                      {
                          //sélectionner les champs de la table livres
                          string sqlStr = "select Isbn, Auteur, Titre, Prix, Quantite, Photo, Resume from Livres";
                          SqlCommand cmd = new SqlCommand(sqlStr, con);
                          cmd.CommandType = CommandType.Text;
                          //ouverture de la connexion
                          con.Open();
                          SqlDataReader rdr = cmd.ExecuteReader();
                          List<Livre> listelivres = new List<Livre>();
                          //boucle pour récupérer les données
                          while (rdr.Read())
                          {
                              Livre livre = new Livre();
                              livre.Isbn = rdr["Isbn"].ToString();
                              livre.Auteur = rdr["Auteur"].ToString();
                              livre.Titre = rdr["Titre"].ToString();
                              livre.Prix = Convert.ToDouble(rdr["Prix"]);
                              livre.Quantite = Convert.ToInt32(rdr["Quantite"]);
                              livre.Photo = rdr["Photo"].ToString();
                              livre.Resume = rdr["Resume"].ToString();
                              listelivres.Add(livre);
                          }
                          //Fermeture de la connexion
                          con.Close();
                          //retourne la liste de cours
                          return listelivres;
                      }
                  }




          • Partager sur Facebook
          • Partager sur Twitter
            29 août 2019 à 18:17:43

            Peut-être un problème de formatage des chaines.

            Utilisez le débogueur pour voir le contenu de 'rdr["Prix""]' en ligne 20 et aussi pour vérifier la "Culture" du thread exécutant ce code de "Convert.ToDouble".

            (En utilisant des trucs plus évolués comme DataAdapter à la place de cette cochonnerie de DataReader, vous n'auriez pas ce type de problème)

            • Partager sur Facebook
            • Partager sur Twitter
            Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.

            Pourquoi mes nombre décimal sont toujours a 0

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown