I want to do update and insert in one button.
i want it to check if there's data then it will just update it but if not it will add it.
I don't know what i'm missing in this code
cnx.Open();
        SqlCommand cmd = cnx.CreateCommand();
        SqlDataReader dr;
        cmd.CommandText = "Select * from TPayement where ID='" + txt_ID.Text + "'";
        dr = cmd.ExecuteReader();
        if (dr.HasRows)
        {
            dr.Read();
            cmd.CommandText = "update TPayement (ID, Nom, QUA, Salaire, NombreJour, HeurSupplimentaire, SalaireHeur, Somme) values (@ID, @Nom, @QUA, @Salaire, @NombreJour, @HeurSupplimentaire, @SalaireHeur, @Somme) where ID='" + txt_ID.Text + "'";
            cmd.Parameters.Add("@ID", SqlDbType.Int);
            cmd.Parameters.Add("@Nom", SqlDbType.VarChar, 50);
            cmd.Parameters.Add("@QUA", SqlDbType.VarChar, 50);
            cmd.Parameters.Add("@Salaire", SqlDbType.Float);
            cmd.Parameters.Add("@NombreJour", SqlDbType.Float);
            cmd.Parameters.Add("@HeurSupplimentaire", SqlDbType.Float);
            cmd.Parameters.Add("@SalaireHeur", SqlDbType.Float);
            cmd.Parameters.Add("@Somme", SqlDbType.Float);
            cmd.Parameters["@ID"].Value = txt_ID.Text;
            cmd.Parameters["@Nom"].Value = txt_Nom.Text;
            cmd.Parameters["@QUA"].Value = txt_QUA.Text;
            cmd.Parameters["@Salaire"].Value = txt_Salaire.Text;
            cmd.Parameters["@NombreJour"].Value = txt_NBRJ.Text;
            cmd.Parameters["@HeurSupplimentaire"].Value = txt_HSUP.Text;
            cmd.Parameters["@SalaireHeur"].Value = txt_SalireHeur.Text;
            cmd.Parameters["@Somme"].Value = txt_Somme.Text;
            cmd.ExecuteNonQuery();
            MessageBox.Show("Se payement est enregistrer");
        }
        else
        {
            cmd.CommandText = "insert into TPayement (ID, Nom, QUA, Salaire, NombreJour, HeurSupplimentaire, SalaireHeur, Somme) values (@ID, @Nom, @QUA, @Salaire, @NombreJour, @HeurSupplimentaire, @SalaireHeur, @Somme)";
            cmd.Parameters.Add("@ID", SqlDbType.Int);
            cmd.Parameters.Add("@Nom", SqlDbType.VarChar, 50);
            cmd.Parameters.Add("@QUA", SqlDbType.VarChar, 50);
            cmd.Parameters.Add("@Salaire", SqlDbType.Float);
            cmd.Parameters.Add("@NombreJour", SqlDbType.Float);
            cmd.Parameters.Add("@HeurSupplimentaire", SqlDbType.Float);
            cmd.Parameters.Add("@SalaireHeur", SqlDbType.Float);
            cmd.Parameters.Add("@Somme", SqlDbType.Float);
            cmd.Parameters["@ID"].Value = txt_ID.Text;
            cmd.Parameters["@Nom"].Value = txt_Nom.Text;
            cmd.Parameters["@QUA"].Value = txt_QUA.Text;
            cmd.Parameters["@Salaire"].Value = txt_Salaire.Text;
            cmd.Parameters["@NombreJour"].Value = txt_NBRJ.Text;
            cmd.Parameters["@HeurSupplimentaire"].Value = txt_HSUP.Text;
            cmd.Parameters["@SalaireHeur"].Value = txt_SalireHeur.Text;
            cmd.Parameters["@Somme"].Value = txt_Somme.Text;
            dr.Close();
            cmd.ExecuteNonQuery();
            MessageBox.Show("Se payement est enregistrer");
        }
        dr.Close();
        cnx.Close();
 
    