如何在C#应用程序上处理数据库重复项?

时间:2019-02-14 09:21:50

标签: c# sql

在我的程序中,我有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());

                }
            }
        }
    }

1 个答案:

答案 0 :(得分:0)

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

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

希望这会有所帮助