www.baike369.com
百科369 > ASP.NET教程 > ASP.NET在SqlDataSource控件中处理SQL命令执行错误和异常

ASP.NET在SqlDataSource控件中处理SQL命令执行错误和异常


ASP.NET在SqlDataSource控件中处理SQL命令执行错误和异常

在ASP.NET中,使用下面的4个事件,可以处理SqlDataSource控件抛出的异常:

  • Deleted:在SqlDataSource控件执行其delete命令后立即触发。
  • Inserted:在SqlDataSource控件执行insert命令后立即触发。
  • Selected:在SqlDataSource控件执行select命令后立即触发。
  • Updated:在SqlDataSource控件执行update命令后立即触发。

当命令执行的时候,这些事件都会接收一个EventArgs参数,这个参数包含引发的任何异常。


实例

在HandleError.aspx网页中,使用SELECT命令从DontExist数据库表而不是从正确的Movies数据库表中读取记录。程序代码如下:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="HandleError.aspx.cs" Inherits="HandleError" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
    protected void srcMovies_Selected(object sender, SqlDataSourceStatusEventArgs e)
    {
        if (e.Exception != null)
        {
            lblError.Text = e.Exception.Message;
            e.ExceptionHandled = true;
        }
    }
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <style type="text/css">
        .error
        {
            display:block;
            color:red;
            font:bold 16px 宋体;
            margin:10px;
        }
    </style>
    <title>ASP.NET在SqlDataSource控件中处理SQL命令执行错误和异常-www.baike369.com</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>

    <asp:Label
        id="lblError"
        EnableViewState="false"
        CssClass="error"
        Runat="server">
    </asp:Label>

    <asp:GridView
        id="grdMovies"
        DataSourceID="srcMovies"
        Runat="server">
    </asp:GridView>

    <asp:SqlDataSource
        id="srcMovies"
        SelectCommand="SELECT * FROM DontExist"
        ConnectionString="<%$ ConnectionStrings:Movies %>"
        OnSelected="srcMovies_Selected"
        Runat="server">
    </asp:SqlDataSource>

    </div>
    </form>
</body>
</html>

执行结果如下:

ASP.NET在SqlDataSource控件中处理SQL命令执行错误和异常的操作效果

使用浏览器打开HandleError.aspx页面代码,当SqlDataSource控件试图从DontExist数据库表中读取数据时,就会引发异常或者错误,因为该数据库表就不存在。

在srcMovies_Selected()方法中,异常被检测出来,并会将异常信息显示在Label控件中。


提示

SqlDataSource控件的ExceptionHandled属性用于遮盖异常,防止异常扩散。如果不将该属性值设置为true,则页面将会直接显示异常的详细信息。如下图所示:

ASP.NET页面直接显示异常的详细信息的操作效果

Copyright© 2011-2016 www.baike369.com All Rights Reserved