C# 如何将数据库中的错误消息显示为对用户的警报

C# 如何将数据库中的错误消息显示为对用户的警报,c#,sql,asp.net,webforms,C#,Sql,Asp.net,Webforms,我有一个表,其中包含其他表的多个外键,为了防止它们被删除,这些表中的数据被用作另一个表中的外键,该表使用了限制。。。但是如何通过警报向用户显示此错误 protected void ListSourceClient_Deleting(object sender, SqlDataSourceCommandEventArgs e) { try { var conn = new SqlConnection(ConfigurationMana

我有一个表,其中包含其他表的多个外键,为了防止它们被删除,这些表中的数据被用作另一个表中的外键,该表使用了限制。。。但是如何通过警报向用户显示此错误

protected void ListSourceClient_Deleting(object sender, SqlDataSourceCommandEventArgs e)
    {
        try
        {
            var conn = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);
            string check = "DELETE FROM Cliente WHERE [Id] = @Id";
            SqlCommand cmd = new SqlCommand(check, conn);
            conn.Open();
            conn.Close();
            e.Cancel = true;

        }
        catch (Exception)
        {
            Response.Write("<script>alert('You can't delete this client because it's used!');</script>");
        }
    }
protectedvoid ListSourceClient_删除(对象发送方,SqlDataSourceCommandEventArgs e)
{
尝试
{
var conn=新的SqlConnection(ConfigurationManager.ConnectionString[“ConnectionString”].ConnectionString);
string check=“从客户删除,其中[Id]=@Id”;
SqlCommand cmd=新的SqlCommand(检查,连接);
conn.Open();
康涅狄格州关闭();
e、 取消=真;
}
捕获(例外)
{
Write(“警报('您无法删除此客户端,因为它已被使用!”);”;
}
}

这取决于您希望向最终用户显示的异常类型

通常,这是如何从代码隐藏向最终用户显示警报消息

protected void DeleteButton_Click(object sender, EventArgs e)
{
    try
    {
        // Simulating an exception
        throw new Exception("You can't delete this client because it's used!");
    }
    catch (Exception ex)
    {
        this.ClientScript.RegisterStartupScript(this.GetType(), "alert" + UniqueID,
            "alert(\"" + ex.Message + "\");", true);

        // You need to use ScriptManager if you use ajax.
        /*ScriptManager.RegisterStartupScript(this, this.GetType(), "alert" + UniqueID,
"alert(\"" + ex.Message + "\");", true);*/
    }
}
仅供参考:我注意到您在邮件中使用了单引号,因此我将警报邮件的单引号替换为双引号。

试试这个

试一试 {

        string deleteCommand = "DELETE FROM [Kit] WHERE [KitID] = @KitID";

        SqlDataSource1.DeleteCommand = deleteCommand;

    }
    catch (SqlException SqlEx)
    {

        switch (SqlEx.Number)
        {
            case 547:
                // Do something.
                ErrorLabel.Text = "Error: "there is some relation"
                break;
            default:
                throw;
        }
    }

我试图处理此事件它不是;Sql异常对用户不友好。理想情况下,您需要自己记录Sql异常,然后向最终用户显示友好的错误消息。我将在删除sqldatasource的事件中尝试此操作?