我正在制作时间表管理。我想在网格视图中显示表格。我已经完成了所有的事情,除了这些数据重复是数据库。重复的值不应该在数据库中接受。我已经尝试过这些下面的代码,但它显示重复值这些代码中是否有任何问题?
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");
}
}
答案 0 :(得分:1)
我不确定您的数据库设计。有很多方法可以实现这一目标。
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 :(得分: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';