using System;
using System.Data;
using System.Xml;
using System.Data.SqlClient;
using System.Collections;

namespace Book.DAL
{
    
/// <summary>
    
/// SqlServer数据访问帮助类
    
/// </summary>

    public sealed class SqlHelper
    
{
        
私有构造函数和方法 私有构造函数和方法结束

        
ExecuteNonQuery命令 ExecuteNonQuery方法结束

        
ExecuteDataset方法 ExecuteDataset数据集命令结束
        
        
ExecuteReader 数据阅读器 ExecuteReader数据阅读器

        
ExecuteScalar 返回结果集中的第一行第一列
/// <summary>
        
/// 执行指定数据库事务的命令,指定参数值,返回结果集中的第一行第一列.
        
/// </summary>
        
/// <remarks>
        
/// 此方法不提供访问存储过程输出参数和返回值参数.
        
/// 
        
/// 示例:  
        
///  int orderCount = (int)ExecuteScalar(trans, "GetOrderCount", 24, 36);
        
/// </remarks>
        
/// <param name="transaction">一个有效的连接事务</param>
        
/// <param name="spName">存储过程名称</param>
        
/// <param name="parameterValues">分配给存储过程输入参数的对象数组</param>
        
/// <returns>返回结果集中的第一行第一列</returns>

        public static object ExecuteScalar(SqlTransaction transaction, string spName, params object[] parameterValues)
        
{
            
if( transaction == null ) throw new ArgumentNullException( "transaction" );
            
if( transaction != null && transaction.Connection == null ) throw new ArgumentException( "The transaction was rollbacked or commited, please provide an open transaction.""transaction" );
            
if( spName == null || spName.Length == 0 ) throw new ArgumentNullException( "spName" );

            
// 如果有参数值
            if ((parameterValues != null&& (parameterValues.Length > 0)) 
            
{
                
// PPull the parameters for this stored procedure from the parameter cache ()
                SqlParameter[] commandParameters = SqlHelperParameterCache.GetSpParameterSet(transaction.Connection, spName);

                
// 给存储过程参数赋值
                AssignParameterValues(commandParameters, parameterValues);

                
// 调用重载方法
                return ExecuteScalar(transaction, CommandType.StoredProcedure, spName, commandParameters);
            }

            
else 
            
{
                
// 没有参数值
                return ExecuteScalar(transaction, CommandType.StoredProcedure, spName);
            }

        }


        
#endregion ExecuteScalar    

        
ExecuteXmlReader XML阅读器 ExecuteXmlReader 阅读器结束

        
FillDataset 填充数据集
        
        
UpdateDataset 更新数据集

        
CreateCommand 创建一条SqlCommand命令

        
ExecuteNonQueryTypedParams 类型化参数(DataRow)

        
ExecuteDatasetTypedParams 类型化参数(DataRow)

        
ExecuteReaderTypedParams 类型化参数(DataRow)

        
ExecuteScalarTypedParams 类型化参数(DataRow)

        
ExecuteXmlReaderTypedParams 类型化参数(DataRow)

    }

    
/// <summary>
    
/// SqlHelperParameterCache提供缓存存储过程参数,并能够在运行时从存储过程中探索参数.
    
/// </summary>

    public sealed class SqlHelperParameterCache
    
{
        
私有方法,字段,构造函数 私有方法,字段,构造函数结束

        
缓存方法 缓存方法结束

        
检索指定的存储过程的参数集 参数集检索结束

    }

}
posted on 2008-10-23 16:34  凌风的博客  阅读(670)  评论(0编辑  收藏  举报