/**********************************************
* 类作用: 数据库操作返回数据集
* 建立人: 办公协同
* 建立时间: 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 };
}
}
}