如何阻止数据库

时间:2015-05-05 10:51:33

标签: c# asp.net

我正在制作时间表管理。我想在网格视图中显示表格。我已经完成了所有的事情,除了这些数据重复是数据库。重复的值不应该在数据库中接受。我已经尝试过这些下面的代码,但它显示重复值这些代码中是否有任何问题?

 protected void Button1_Click(object sender, EventArgs e)
    {
        using (SqlConnection con = new SqlConnection(@"Data Source=(LocalDB)\v11.0;AttachDbFilename=C:\Users\Enfosys-8\Documents\Visual Studio 2012\Projects\NewTimeTable\NewTimeTable\App_Data\Admindetail.mdf;Integrated Security=True"))
        {
            con.Open();
            SqlDataAdapter cmd = new SqlDataAdapter("select * from datelist where WeekMonth='" + txtmonth.Text + "' and subject='" + ddlsubject.SelectedValue + "' and daywk='" + ddlweek.SelectedValue + "' ", con);
            DataTable dt = new DataTable("dt");
            cmd.Fill(dt);
            Gv3.DataSource = dt;
            Gv3.DataBind();
        }

    }


 using (SqlDataReader Reader = cmd.ExecuteReader())
            {
                if (Reader.HasRows)
                {
                    throw new ApplicationException("data is duplicated");
                }
            }

2 个答案:

答案 0 :(得分:1)

我不确定您的数据库设计。有很多方法可以实现这一目标。

  1. 使用约束
  2. 1.1您可以尝试在表格中创建复合主键。尝试插入重复值将导致异常

    ALTER TABLE test ADD CONSTRAINT PK_test PRIMARY KEY (datedif,hour1,hour2,hour3,hour4,hour5,dayweek,weekmonth)

    1.2使用唯一约束

    ALTER TABLE test
    ADD CONSTRAINT uc_test UNIQUE
    (
       datedif,hour1,hour2,hour3,hour4,hour5,dayweek,weekmonth
    )
    
    1. 使用Merge语句可避免重复的行插入。 https://msdn.microsoft.com/en-us/library/bb510625.aspx?f=255&MSPPError=-2147217396

答案 1 :(得分:0)

正如Rawitas Krungkaew所建议的那样,为表添加唯一约束,其列不应具有重复值, 添加唯一列后,我们可以有很多方法: 一个解释如下:

首先在存储过程中,插入将因约束而失败,因此我们可以使用try \ catch来处理异常。

insert ignore into member_group (id_group, id_member)
select member_group.id_group, member.id_member
from member_group 
cross join member
where group_name = 'MYGROUP';