/********************************************** * 类作用: 数据库操作返回数据集 * 建立人: 办公协同 * 建立时间: 2008/12/30 ***********************************************/ using System; using System.Collections.Generic; //using System.Linq; using System.Text; using System.Data; using System.Data.SqlClient; namespace HomeService.DBHelper.Utility { /// /// Result 是对 SqlHelper.Execute() 或 SqlHelper.ExecuteSql() 函数执行后的结果进行的封装。提供上一次执行的结果集合。 /// /// /// Result 是对 SqlHelper.Execute() 或 SqlHelper.ExecuteSql() 函数执行后的结果进行的封装。提供上一次执行的结果集合。 /// /// Result 保存上一次执行所使用的所有参数(通过 Parameters 属性可以获得),并记录是否产生错误(不抛出异常),所以每次 /// 执行完 SqlHelper.Execute() 或 SqlHelper.ExecuteSql() 函数后都应该使用 Result.HasError 属性来判断执行过程中是否产生 /// 了错误,若为 True,可以从 ErrorMessage 中得到错误信息。 /// /// Result.DataTable 属性可以读出执行完毕后的结果,例如使用 Select 语句执行后的结果。 /// /// Result.DataSet 可以得到结果集的 DataSet 形式; /// /// Result.SingleResult 可以得到第一行,第一列的数据(效果与执行 SqlCommand.ExecuteScalar() 一样。 )。 /// /// public sealed class Result { /// /// 参数集 /// public SqlParameterCollection Parameters { get; internal set; } /// /// 是否产生错误 /// public bool HasError { get; internal set; } /// /// 错误信息(若产生错误) /// public string ErrorMessage { get; internal set; } /// /// 执行后的结果集(数据表) /// public DataTable DataTable { get; internal set; } /// /// 操作的记录数 /// public int OprateCount { get; internal set; } /// /// 执行后的结果集(DataSet形式) /// public DataSet DataSet { get { DataSet dataSet = new DataSet(); if (DataTable != null) dataSet.Tables.Add(DataTable); return dataSet; } } /// /// 执行后的单个结果(第一行,第一列的数据) /// public object SingleResult { get { return (DataTable != null && DataTable.Rows.Count > 0) ? DataTable.Rows[0][0] : null; } } /// /// 执行后的数据集记录数 /// public int RecordCount { get { return (DataTable != null && DataTable.Rows.Count > 0) ? DataTable.Rows.Count : 0; } } /// /// 获得一个初始化实例,它将生成一个属性值为 { DataTable = new DataTable(), ErrorMessage = string.Empty, HasError = false } 的 /// Result 实例。 /// /// 返回一个 Result 实例。 internal static Result GetInstance() { return new Result() { DataTable = new DataTable(), ErrorMessage = string.Empty, HasError = false, OprateCount = 0 }; } } }