完整SqlHelper类详细中文注释(4)

2019-08-03 10:38

/// 执行指定事务的命令,返回DataSet. /// /// /// 示例:

/// DataSet ds = ExecuteDataset(trans, CommandType.StoredProcedure, \ ///

///

/// /// /// 返回一个包含结果集的DataSet

public static DataSet ExecuteDataset(SqlTransaction transaction, CommandType commandType, string commandText) ...{

return (SqlParameter[])null); }

/**////

/// 执行指定事务的命令,指定参数,返回DataSet. ///

/// /// 示例:

/// DataSet ds = ExecuteDataset(trans, CommandType.StoredProcedure, \new SqlParameter(\ ///

///

/// /// /// /// 返回一个包含结果集的DataSet

public static DataSet ExecuteDataset(SqlTransaction transaction, CommandType commandType, string commandText, params SqlParameter[] commandParameters) ...{

if( transaction == null ) throw new ArgumentNullException( \ if( transaction != null && transaction.Connection == null ) throw new ArgumentException( \transaction was rollbacked or commited, please provide an open transaction.\

// 预处理

SqlCommand cmd = new SqlCommand(); bool mustCloseConnection = false;

PrepareCommand(cmd, transaction.Connection, transaction, commandText, commandParameters, out mustCloseConnection );

commandType,

ExecuteDataset(transaction,

commandType,

commandText,

// 创建 DataAdapter & DataSet

using( SqlDataAdapter da = new SqlDataAdapter(cmd) ) ...{

DataSet ds = new DataSet(); da.Fill(ds);

cmd.Parameters.Clear(); return ds; } }

/**////

/// 执行指定事务的命令,指定参数值,返回DataSet.

///

///

/// 此方法不提供访问存储过程输入参数和返回值. /// 示例.:

/// DataSet ds = ExecuteDataset(trans, \ ///

///

/// /// /// 返回一个包含结果集的DataSet

public static DataSet ExecuteDataset(SqlTransaction transaction, string spName, params object[] parameterValues) ...{

if( transaction == null ) throw new ArgumentNullException( \

if( transaction != null && transaction.Connection == null ) throw new ArgumentException( \transaction was rollbacked or commited, please provide an open transaction.\

if( spName == null || spName.Length == 0 ) throw new ArgumentNullException( \

if ((parameterValues != null) && (parameterValues.Length > 0)) ...{

// 从缓存中加载存储过程参数 SqlParameter[]

// 给存储过程参数分配值

AssignParameterValues(commandParameters, parameterValues);

return ExecuteDataset(transaction, CommandType.StoredProcedure, spName, commandParameters); }

commandParameters

=

SqlHelperParameterCache.GetSpParameterSet(transaction.Connection, spName);

else

...{

return ExecuteDataset(transaction, CommandType.StoredProcedure, spName); } }

#endregion ExecuteDataset数据集命令结束

ExecuteReader 数据阅读器#region ExecuteReader 数据阅读器

/**////

/// 枚举,标识数据库连接是由SqlHelper提供还是由调用者提供 ///

private enum SqlConnectionOwnership

...{

/**////

由SqlHelper提供连接 Internal,

///

由调用者提供连接 External }

///

/// 执行指定数据库连接对象的数据阅读器.

///

///

/// 如果是SqlHelper打开连接,当连接关闭DataReader也将关闭. /// 如果是调用都打开连接,DataReader由调用都管理.

///

/// ///

/// ///

///

///

/// 返回包含结果集的SqlDataReader

private static SqlDataReader ExecuteReader(SqlConnection connection, SqlTransaction transaction, CommandType commandType, string commandText, SqlParameter[] commandParameters, SqlConnectionOwnership connectionOwnership) ...{

if( connection == null ) throw new ArgumentNullException( \

bool mustCloseConnection = false;

// 创建命令

SqlCommand cmd = new SqlCommand(); try ...{

PrepareCommand(cmd, connection,

// 创建数据阅读器

SqlDataReader dataReader; transaction, commandType,

commandText, commandParameters, out mustCloseConnection );

command

if (connectionOwnership == SqlConnectionOwnership.External) ...{

dataReader = cmd.ExecuteReader(); } else ...{

dataReader = cmd.ExecuteReader(CommandBehavior.CloseConnection); }

// 清除参数,以便再次使用..

// HACK: There is a problem here, the output parameter values are fletched // when the reader is closed, so if the parameters are detached from the // then the SqlReader can磘 set its values.

// When this happen, the parameters can磘 be used again in other command. bool canClear = true;

foreach(SqlParameter commandParameter in cmd.Parameters) ...{

if (commandParameter.Direction != ParameterDirection.Input) canClear = false; }

if (canClear) ...{

cmd.Parameters.Clear(); } return dataReader; } catch ...{

if( mustCloseConnection ) connection.Close(); throw;

}

}

/**////

/// 执行指定数据库连接字符串的数据阅读器. ///

/// /// 示例:

/// SqlDataReader dr = ExecuteReader(connString, CommandType.StoredProcedure, \

///

/// /// /// /// 返回包含结果集的SqlDataReader

public static SqlDataReader ExecuteReader(string connectionString, CommandType commandType, string commandText) ...{

return ExecuteReader(connectionString, (SqlParameter[])null); }

/**////

/// 执行指定数据库连接字符串的数据阅读器,指定参数. ///

/// /// 示例:

/// SqlDataReader dr = ExecuteReader(connString, CommandType.StoredProcedure, \ ///

///

/// ///

///

/// 返回包含结果集的SqlDataReader

public static SqlDataReader ExecuteReader(string connectionString, CommandType commandType, string commandText, params SqlParameter[] commandParameters) ...{

if( connectionString == null || connectionString.Length == 0 ) throw new ArgumentNullException( \ SqlConnection connection = null; try ...{

commandType, commandText,


完整SqlHelper类详细中文注释(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:关于印发启用2000国家坐标系实施方案的通知

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: