业务逻辑>数据层>SqlDataSource>处理sql命令执行错误

先看前台代码:

 1 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Demo23.aspx.cs" Inherits="Demo23" %>
 2 
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 4 
 5 <html xmlns="http://www.w3.org/1999/xhtml">
 6 <head runat="server">
 7     <title>示范如何处理 SELECT 语句执行错误</title>
 8 </head>
 9 <body>
10     <form id="form1" runat="server">
11     <div>
12         <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
13         <asp:GridView ID="GridView1"
14             runat="server" DataSourceID="SqlDataSource1">
15         </asp:GridView>
16         <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
17             ConnectionString="<%$ ConnectionStrings:ChtNorthwind %>" 
18             SelectCommand="SELECT * FROM [authors222]" 
19             onselected="SqlDataSource1_Selected"></asp:SqlDataSource>
20     </div>
21     </form>
22 </body>
23 </html>
24 

其中,authors222是不存在的表。

再看后台代码:

 1 using System;
 2 using System.Collections;
 3 using System.Configuration;
 4 using System.Data;
 5 using System.Linq;
 6 using System.Web;
 7 using System.Web.Security;
 8 using System.Web.UI;
 9 using System.Web.UI.HtmlControls;
10 using System.Web.UI.WebControls;
11 using System.Web.UI.WebControls.WebParts;
12 using System.Xml.Linq;
13 
14 public partial class Demo23 : System.Web.UI.Page
15 {
16     protected void Page_Load(object sender, EventArgs e)
17     {
18 
19     }
20     protected void SqlDataSource1_Selected(object sender, SqlDataSourceStatusEventArgs e)
21     {
22         if (e.Exception != null)
23         {
24             Label1.Text = e.Exception.Message;
25 
26             e.ExceptionHandled = true//这个表示异常已由开发人员自行处理
27         }
28     }
29 }
30 
注意,e.ExceptionHandled = false;的话,或者不设置,异常不会赋值给Label1,而会跟平常的错误一样。

合乎自然而生生不息。。。
原文地址:https://www.cnblogs.com/samwu/p/1787375.html