1

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

code first_name last_name 
 1     john       smith
 2     mike       croft

即使代码不同,我也不希望再次添加 john smith 或 mike croft。我对 c# 有点陌生,所以如果有人可以在代码中给我一个简单的答案,我将不胜感激。

PS 代码是主键,我还有其他列。

这是我的代码:

    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”的两条记录。但如果其中一条重复出现也没关系。我希望代码有所帮助。

4

2 回答 2

1

我通过在 SQL 中添加一个约束来做到这一点。现在可以了。如果有人有类似的问题,这是我用 SQL 编写的代码:

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

这是一个对我有帮助的 youtube 视频的链接:

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

于 2013-05-16T08:21:53.877 回答
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  
                        }

希望你喜欢谢谢

于 2013-06-19T05:05:51.330 回答