首页 > 解决方案 > 如何处理 C# 应用程序上的数据库重复项?

问题描述

在我的程序中,我有 3 个主要功能 INSERT UPDATE DELETE,该项目是关于在数据库中创建机器配置文件来更新和删除它。

到目前为止,我的代码正在运行,但我有一些重复的问题,当我想在我的代码中更新时,我会检查一个配置文件是否已经存在,所以它想要复制它但是在这里当我更新它时复制记录,当我删除做同样的事情。

这是表达我的问题的视频的链接:https ://vimeo.com/317221805

这是我的代码:

private void Sauv_Btn_Click_1(object sender, EventArgs e)
    {

        SqlConnection con = new SqlConnection(cnString);

        using (SqlCommand check_User_Name = new SqlCommand("SELECT COUNT(*) FROM [Fiche_Machine] WHERE ([N_SERIE] = @N_SERIE)", con))
        {
            con.Open();
            check_User_Name.Parameters.AddWithValue("@N_SERIE", textBoxNumSer.Text);

            using (SqlDataReader reader = check_User_Name.ExecuteReader())
            {
                reader.Read();
                int count = reader.GetInt32(0);
            }
            int UserExist = (int)check_User_Name.ExecuteScalar();

            if (MessageBox.Show("Voulez-vous sauvgarder la modification de cette fiche client ?", "Sauvgarde fiche client...", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
            {
                try
                {

                    if (UserExist == 0)
                    {

                        MessageBox.Show("Le Client n'existe pas Renseigner le numero de Serie UNIQUE obligatoirement");

                    }
                    else if (UserExist > 0)

                    {
                        //Fihce Machine-----------------------------------------------------------------------------------------------------------------


                        Methodes.dt.Rows[rowId]["N_SERIE"] = textBoxNumSer.Text.Trim();
                        Methodes.dt.Rows[rowId]["TYPE_DE_MACHINE"] = textBoxTpMch.Text.Trim();
                        Methodes.dt.Rows[rowId]["N_MOTEUR"] = textBoxNumMtr.Text.Trim();
                        Methodes.dt.Rows[rowId]["PONT_AVANT"] = textBoxPnAv.Text.Trim();
                        Methodes.dt.Rows[rowId]["PONT_ARRIERE"] = textBoxPnAr.Text.Trim();
                        Methodes.dt.Rows[rowId]["BOITE_DE_VITESSE"] = textBoxBtVit.Text.Trim();
                        Methodes.dt.Rows[rowId]["DISTRIBUTEUR_AVANT"] = textBoxDisAv.Text.Trim();




                        //------------------------------------------------------------------------------------------------------------------------

                        Methodes.adap.Update(Methodes.dt);

                        MessageBox.Show("Fiche Sauvgarder avec succés");
                    }

                }
                catch (SqlException ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }        

            Form1 form1 = new Form1();
            form1.LoadData();


            }
    }

    private void Vld_Btn_Click_1(object sender, EventArgs e)
    {
        SqlConnection con = new SqlConnection(cnString);

        using (SqlCommand check_User_Name = new SqlCommand("SELECT COUNT(*) FROM [Fiche_Machine] WHERE ([N_SERIE] = @N_SERIE)", con))
        {
            con.Open();
            check_User_Name.Parameters.AddWithValue("@N_SERIE", textBoxNumSer.Text);

            using (SqlDataReader reader = check_User_Name.ExecuteReader())
            {
                reader.Read();
                int count = reader.GetInt32(0);
            }
            int UserExist = (int)check_User_Name.ExecuteScalar();

            if (UserExist == 0)
            {

                try
                {
                    if (textBoxNumSer.Text.Trim() == ("N_SERIE"))
                    {
                        MessageBox.Show("N°SERIE Existant vous pouvez le modifier ou le supprimer");
                    }

                    if (textBoxNumSer.Text.Trim() == "")
                    {

                        MessageBox.Show("Remplissez les champs vides.... et renseigner le numero de Serie UNIQUE obligatoirement");

                    }
                    else

                    {

                        DataRow dr;

                        dr = Methodes.dt.NewRow();


                        //Fihce Machine-----------------------------------------------------------------------------------------------------------------


                        dr["N_SERIE"] = textBoxNumSer.Text.Trim();
                        dr["TYPE_DE_MACHINE"] = textBoxTpMch.Text.Trim();
                        dr["N_MOTEUR"] = textBoxNumMtr.Text.Trim();
                        dr["PONT_AVANT"] = textBoxPnAv.Text.Trim();
                        dr["PONT_ARRIERE"] = textBoxPnAr.Text.Trim();
                        dr["BOITE_DE_VITESSE"] = textBoxBtVit.Text.Trim();
                        dr["DISTRIBUTEUR_AVANT"] = textBoxDisAv.Text.Trim();


                        //------------------------------------------------------------------------------------------------------------------------



                        Methodes.dt.Rows.Add(dr);

                        Methodes.adap.Update(Methodes.dt);

                        try
                        {

                            MessageBox.Show("Fiche Sauvgarder avec succés");
                        }
                        catch (SqlException ex)
                        {
                            MessageBox.Show(ex.Message);
                        }

                    }



                }

                catch (Exception ex)

                {

                    MessageBox.Show(ex.ToString());

                }

                con.Close();

            }
            else

            {

                MessageBox.Show("Ce Numero de Serie existe déjà entrez un nouveau svp");
            }
        }

                Form1 form1 = new Form1();
                form1.LoadData();
    }



    private void Supp_Btn_Click_1(object sender, EventArgs e)
    {

        SqlConnection con = new SqlConnection(cnString);

        using (SqlCommand check_User_Name = new SqlCommand("SELECT COUNT(*) FROM [Fiche_Machine] WHERE ([N_SERIE] = @N_SERIE)", con))
        {
            con.Open();
            check_User_Name.Parameters.AddWithValue("@N_SERIE", textBoxNumSer.Text);

            using (SqlDataReader reader = check_User_Name.ExecuteReader())
            {
                reader.Read();
                int count = reader.GetInt32(0);
            }
            int UserExist = (int)check_User_Name.ExecuteScalar();

            if (UserExist > 0)
            {

                try
                {

                    if (textBoxNumSer.Text.Trim() == "")
                    {

                        MessageBox.Show("La fiche est vide !! Veuillez Selectionner une fiche à supprimer");

                    }
                    else

                    {
                        try

                        {
                            if (MessageBox.Show("êtes-vous sûr de vouloir supprimer ?", "Suppression...", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                            {

                                Methodes.dt.Rows[rowId].Delete();

                                Methodes.adap.Update(Methodes.dt);

                                MessageBox.Show("Fiche Supprimer avec succés");
                            }
                        }

                        catch (Exception ex)

                        {

                            MessageBox.Show(ex.ToString());

                        }

                        Form1 form1 = new Form1();
                        form1.LoadData();
                    }
                }
                catch (Exception ex)

                {

                    MessageBox.Show(ex.ToString());

                }
            }
        }
    }

标签: c#sql

解决方案


如果要检查用户是否存在,可以使用

if(reader.HasRows) user exists else user doesn't exist

希望这可以帮助


推荐阅读