如果尝试将重复值添加到数据库中,请在网页上显示错误消息?

时间:2014-06-19 21:31:00

标签: asp.net

我有一个界面来创建一个包含客户代码和客户名称的新客户,该客户将被插入到Customer表中。表中的代码不能重复。我想要做的是如果在客户代码区域中输入了重复的代码并提交,则在网页上显示错误消息。我怎么能这样做?以下是我的代码,谢谢!

protected void btnOk_Click(object sender, EventArgs e)
        {
            SqlConnection conn = new SqlConnection(GetConnectionString());
            SqlCommand cmd = new SqlCommand();
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Connection = conn;
            cmd.CommandText = "dbo.InsertCustomer";

        cmd.Parameters.AddWithValue("@CCode", txtCustomerCode.Text);
        cmd.Parameters.AddWithValue("@CName", txtRemark.Text);

        try
        { 
            conn.Open();
            cmd.ExecuteNonQuery();
            string message = "New Customer Created!";
            System.Text.StringBuilder sb = new System.Text.StringBuilder();
            sb.Append("<script type = 'text/javascript'>");
            sb.Append("window.onload=function(){");
            sb.Append("alert('");
            sb.Append(message);
            sb.Append("')};");
            sb.Append("</script>");
            ClientScript.RegisterClientScriptBlock(this.GetType(), "alert", sb.ToString());                       
        }
        catch (System.Data.SqlClient.SqlException ex)
        {
            string msg = "Insert Error:";
            msg += ex.Message;
            throw new Exception(msg);

        }
        finally
        {
            conn.Close();
            conn.Dispose();
        }

    }

2 个答案:

答案 0 :(得分:0)

您可以为邮件设置标签。像。的东西。

if(ex.Message.ToString().Contains("Duplicate"))  
    this.lblMessage.Text = "Code "+txtCustomerCode.Text+" is already taken."
else
    this.lblMessage.Text = msg;

不确定要查找的确切文字。你也不会重新抛出异常。

答案 1 :(得分:0)

使用ClientScript.RegisterClientScriptBlock继续您正在使用的路线如果您已编写过程以在发生重复时导致异常,则可以将其放入catch块中

ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "popup", "alert('Customer code already exists !!');", true);

引用我的另一个post来解决与您类似的问题