违反PRIMARY KEYCannot在对象'dbo.EventType'中插入重复键。重复键值为(6)

时间:2017-08-02 07:50:05

标签: c# asp.net

我想显示一个msg框,说'id存在,插入不成功',如果我有一个现有ID但是有错误!!

 protected void Button1_Click(object sender, EventArgs e)
{
    int result = 0;

    EventType produ = new EventType(int.Parse(tb_id.Text), tb_Name.Text);
    result = produ.EventTypeInsert();

    if (produ == null)
    {
        if (result > 0)
        {
            Response.Write("<script>alert('Insert successful');</script>");
        }
        else
        {
            Response.Write("<script>alert('Insert NOT successful');</script>");
        }
    }
    else
    {
        Response.Write("<script>alert('ID already exists.Insert NOT successful');</script>");
    }

}

3 个答案:

答案 0 :(得分:0)

我认为你应该使用try catch块。根据异常情况捕获异常并提供所需的消息。

答案 1 :(得分:0)

在您的情况下,我认为您的主键是自动增量。因此,不要在该主键中传递值,因为数据库将自动递增该字段并将其插入。

注意:不要在Primary Auto Incremented Field中传递值。

答案 2 :(得分:0)

请注意,您对produ的null检查很奇怪。删除它或检查produ!= null。你可以像下面这样做。请注意,您还可以将try catch放在EventTypeInsert函数中。我认为会产生更清晰的代码。

int result = 0;
try
{
    EventType produ = new EventType(int.Parse(tb_id.Text), tb_Name.Text);       
    result = produ.EventTypeInsert();

    if (result > 0)
    {
        Response.Write("<script>alert('Insert successful');</script>");
    }
    else
    {
        Response.Write("<script>alert('Insert NOT successful');</script>");
    }
}
catch (SqlException ex)
{
     Response.Write("<script>alert('ID probably already exists.Insert NOT successful');</script>");
}
catch (Exception ex)
{
     // maybe log a general error
}