Erreur de conversion

Bonjour,
J'ai un petit souci avec mon application developpé en C# & SQL Server, les enregistrements se passe bien comme ajout de produit et suppression mais quand s'essaie de mettre à jour ou modifier un élément j'ai ce messgage d'erreur
(Conversion failed when converting the nvarchar value to data type int.)
Et si quelqu'un à une solution aider moi svp
Voici mon code utilisé et le query que j'ai utilisé pour la création de la table :
   private void Updates()
        {
            if (txtPCode.Text.Trim() == string.Empty || txtPrice.Text.Trim() == "" || txtQty.Text.Trim() == "" || txtDesc.Text == "")
            {
                MessageBox.Show("Entrez l'enregistrement suivant ...!");
                return;
            }
            try
            {
                if (MessageBox.Show("Vous êtes sûre de mettre à jour ce produit..?", "", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                {
                    //select brand
                    string bid = "";
                    string cid = "";
                    con.Open();
                    cmd = new SqlCommand("select id from tblBrand where brand like '" + cmbBrand.Text + "'", con);
                    dr = cmd.ExecuteReader();
                    dr.Read();
                    if (dr.HasRows)
                    {
                        bid = dr[0].ToString();
                    }
                    dr.Close();
                    con.Close();

                    //select category

                    con.Open();
                    cmd = new SqlCommand("select id from tblCategory where category like '" + cmbCategory.Text + "'", con);
                    dr = cmd.ExecuteReader();
                    dr.Read();
                    if (dr.HasRows)
                    {
                        cid = dr[0].ToString();
                    }
                    dr.Close();
                    con.Close();




                    con.Open();
                    cmd = new SqlCommand("Update tblProduct set barcode=@barcode, pdesc=@pdesc,brandid=@bid,categoryid=@cid,price=@price,qty=@qty where pcode like @pcode", con);
                    cmd.Parameters.AddWithValue("@PID", txtPCode.Text);
                    cmd.Parameters.AddWithValue("@barcode", txtBarcode.Text);
                    cmd.Parameters.AddWithValue("@Pdesc", txtDesc.Text);
                    cmd.Parameters.AddWithValue("@bid", bid);
                    cmd.Parameters.AddWithValue("@cid", cid);
                    cmd.Parameters.AddWithValue("@price",txtPrice.Text);
                    cmd.Parameters.AddWithValue("@qty", txtQty.Text);
                    cmd.ExecuteNonQuery();
                    con.Close();
                    MessageBox.Show("mMise à jour effectuée avec succès");
                    clear();
                    flist.LoadRecord();
                    this.Dispose();
                }

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                con.Close();
            }
        }


 create table tblProduct
(
pcode int primary key,
barcode nvarchar(50),
pdesc nvarchar(MAX),
brandid int,
categoryid int,
price decimal(18,2),
qty int
)


Merci d'avence pour votre aide

Configuration: Windows / Firefox 72.0

6 réponses

  • Votes
  • Date
  • Date décroissante
  1. Merci pour votre intervention
    C'est dans toutes les lignes
    1. Contributeur
      à quelle ligne de code?
    2. @yg_beC'est à la ligne de la mise à jour
  2. Bonjour Mervlis.
    Si yg_be insiste c’est par ce que ça saute pas au yeux.

    Peux apporter une réponse claire à la question « quelle ligne de code génère l’erreur? ».

    Cette réponse claire ne peut avoir que 2 formes:
    • tu la copies colles dans ta réponse
    • tu indiques le numéro de la ligne tel qu’il apparaît dans le forum, pas dans Visual Studio

    1. Whismeril je ne sais pas comment répondre a cette question mon grand car je ne sais pas d'ou vient cette erreur puisque quand j'essaie de modifier les zones des textes une après l'autre ça ne marche pas
    2. Contributeur
      @Mervelisquand le problème se produit-il? pendant l'exécution du code?
  3. Visual ne s’arrête pas sur une ligne?
    1. Non, rien qu'une fenêtre qui apparaît avec ce message (Conversion failed when converting the nvarchar value to data type int.)
  4. Dans ce cas, tu mets un point d’arrêt au début de la méthode et tu exécutes en pas à pas
    1. Contributeur
      ou faire de plus petits try/catch, ou récupérer plus d'info de l'exception?
  5. Contributeur
    il me semble que deux paramétres de la ligne 43 ne sont pas pris en compte dans les AddWithValue: @pdesc et @pcode.
    ne faudrait-il pas commencer par corriger cela?