ADO.NET 快速入门(八):处理 Errors

除了 Try/Catch 和 Exceptions 以外,新的 ADO.NET 数据框架也允许在 DataSet 的每行数据添加错误信息。如果 Updates 或者其他操作失败,SqlDataAdapters 为 Rows 附加上错误信息。此外,你可以过滤错误行呈现给用户,或者把它传递给错误处理函数。
 
即使用 XML 或者 XML Web Services 传输,Errors 仍然伴随 DataSet。 你可以使用 RowError 属性为 DataSet 的 DataRow 设置错误信息。
 
示例一:
 
            // 设置行的自定义错误
            myDataSet.Tables["Customers"].Rows[0].RowError = "添加一个自定义错误";
            myDataSet.Tables["Customers"].Rows[1].RowError = "再另一个自定义错误";

 

现在,你可以利用 GetErrors() 方法获取 DataTable 中的错误信息。也可以利用 HasErrors 属性测试 Errors。
 
示例二:
 
复制代码
            SqlConnection myConnection = new SqlConnection("server=(local);Integrated Security=SSPI;database=northwind");
            SqlDataAdapter myDataAdapter = new SqlDataAdapter("SELECT * FROM Customers", myConnection);

            DataSet myDataSet = new DataSet();
            myDataAdapter.Fill(myDataSet, "Customers");

            // 设置行的自定义错误
            myDataSet.Tables["Customers"].Rows[0].RowError = "添加一个自定义错误";
            myDataSet.Tables["Customers"].Rows[1].RowError = "再另一个自定义错误";

            if (myDataSet.Tables["Customers"].HasErrors)
            {
                // 获取包含错误的 DataRow 对象数组
                DataRow[] errDataRows = myDataSet.Tables["Customers"].GetErrors();
                Console.WriteLine("DataTable " + myDataSet.Tables["Customers"].TableName + " 包含 " + errDataRows.Length.ToString() + " 个 Errors!");

                for (int i = 0; i <= errDataRows.Length - 1; i++)
                {
                    Console.WriteLine("错误行 " + errDataRows[i]["CustomerID"].ToString() + " -- 错误信息:" + errDataRows[i].RowError);
                }
            }
            else
            {
                Console.WriteLine("==========================");
                Console.WriteLine("DataTable " + myDataSet.Tables["Customers"].TableName + " 没有发现错误!");
            }
复制代码

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值