使用c#检查sql server表中的重复记录

时间:2013-05-15 23:00:30

标签: c# sql-server

我在SQL服务器中有一个表,其中包含两列的字符串数据。我在c#中也有一个“添加”方法,但我不能再在两列上添加相同的数据。例如在表中我有类似的数据:

code first_name last_name 
 1     john       smith
 2     mike       croft

即使代码不同,我也不希望再次添加john smith或mike croft。我对c#有点新意,所以如果有人能在代码中给我一个简单的答案,我会非常感激。

P.S。代码是主键,我也有其他列。

这是我的代码:

    Form1 obj = (Form1)Application.OpenForms["Form1"];

    private void button2_Click(object sender, EventArgs e)
    {
        SqlConnection cn = new SqlConnection(@" Data Source=HOME-D2CADC8D4F\SQL;Initial Catalog=motociclete;Integrated Security=True");
        MemoryStream ms = new MemoryStream();
        pictureBox1.Image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);

        byte[] pic_arr = new byte[ms.Length];
        ms.Position = 0;
        ms.Read(pic_arr, 0, pic_arr.Length);

        SqlCommand cmd = new SqlCommand("insert into motociclete(firma,model,poza,pret,anf,greutate,caprez,putere,garantie,stoc) values (@firma,@model,@poza,@pret,@anf,@greutate,@caprez,@putere,@garantie,@stoc)",cn);
        cmd.Parameters.AddWithValue("@firma", textBox3.Text);
        cmd.Parameters.AddWithValue("@model", textBox10.Text);
        cmd.Parameters.AddWithValue("@poza", pic_arr);
        cmd.Parameters.AddWithValue("@pret", textBox7.Text);
        cmd.Parameters.AddWithValue("@anf", textBox4.Text);
        cmd.Parameters.AddWithValue("@greutate", textBox9.Text);
        cmd.Parameters.AddWithValue("@caprez", textBox5.Text);
        cmd.Parameters.AddWithValue("@putere", textBox8.Text);
        cmd.Parameters.AddWithValue("@garantie", textBox6.Text);
        cmd.Parameters.AddWithValue("@stoc", textBox2.Text);

        cn.Open();


        try
        {
            int rez = cmd.ExecuteNonQuery();
            if (rez > 0)
            {
                MessageBox.Show("Adaugare reusita ");


            }

        }
        catch (Exception ex)
        {

            MessageBox.Show(ex.Message);


        }
        finally {
            cn.Close();
            obj.loaddata();
            this.Close();

        }



    }




}

我不希望能够添加两个具有相同“firma”和“model”的记录。但是如果其中一个重复自己就可以了。 我希望代码有所帮助。

2 个答案:

答案 0 :(得分:1)

我是通过在SQL中添加CONSTRAINT来实现的。它现在有效。如果有人有类似的问题,这就是我在SQL中编写的代码:

ALTER TABLE [dbo].[motociclete]
ADD CONSTRAINT uniq UNIQUE NONCLUSTERED ([firma],[model])

以下是帮助我的YouTube视频的链接:

http://www.youtube.com/watch?v=iS-KEu0pwXI

答案 1 :(得分:0)

  

首先检查重复记录你想要选择txt   值在sql中有,所以不要插入否则插入

bool readerHasRows = false; // <-- Initialize bool here for later use

                        string firma= txt_friema.Text;
                        string model= txt_model.Text;

                        //string color_na = textBox3.Text;
                        string commandQuery = "SELECT firma,model FROM motociclete WHERE firma = @firma or model=@model";
                        using (SqlCommand cmd = new SqlCommand(commandQuery, con))
                        {
                            cmd.Parameters.AddWithValue("@firma", txt_friema.Text);
                            cmd.Parameters.AddWithValue("@model", txt_model.Text);


                            using (SqlDataReader reader = cmd.ExecuteReader())
                            {
                                // bool initialized above is set here
                                readerHasRows = (reader != null && reader.HasRows);
                            }
                        }

                        if (readerHasRows)
                        {

                            MessageBox.Show("Already Exists!!");


                        }

                      else
                        {
                           //your insertion qrocedure  
                        }
希望你喜欢它 感谢