微软的SQLHelper类含完整中文注释Word格式.docx
《微软的SQLHelper类含完整中文注释Word格式.docx》由会员分享,可在线阅读,更多相关《微软的SQLHelper类含完整中文注释Word格式.docx(86页珍藏版)》请在冰豆网上搜索。
summary>
///SqlServer数据访问帮助类
/summary>
publicsealedclassSqlHelper
{
#region私有构造函数和方法
privateSqlHelper(){}
///将SqlParameter参数数组(参数值)分配给SqlCommand命令.
///这个方法将给任何一个参数分配DBNull.Value;
///该操作将阻止默认值的使用.
param>
命令名<
/param>
SqlParameters数组<
privatestaticvoidAttachParameters(SqlCommandcommand,SqlParameter[]commandParameters)
if(command==null)thrownewArgumentNullException("
command"
);
if(commandParameters!
=null)
foreach(SqlParameterpincommandParameters)
if(p!
//检查未分配值的输出参数,将其分配以DBNull.Value.
if((p.Direction==ParameterDirection.InputOutput||p.Direction==ParameterDirection.Input)&
&
(p.Value==null))
p.Value=DBNull.Value;
}
command.Parameters.Add(p);
///将DataRow类型的列值分配到SqlParameter参数数组.
要分配值的SqlParameter参数数组<
将要分配给存储过程参数的DataRow<
privatestaticvoidAssignParameterValues(SqlParameter[]commandParameters,DataRowdataRow)
if((commandParameters==null)||(dataRow==null))
return;
inti=0;
//设置参数值
foreach(SqlParametercommandParameterincommandParameters)
//创建参数名称,如果不存在,只抛出一个异常.
if(commandParameter.ParameterName==null||
commandParameter.ParameterName.Length<
=1)
thrownewException(
string.Format("
请提供参数{0}一个有效的名称{1}."
i,commandParameter.ParameterName));
//从dataRow的表中获取为参数数组中数组名称的列的索引.
//如果存在和参数名称相同的列,则将列值赋给当前名称的参数.
if(dataRow.Table.Columns.IndexOf(commandParameter.ParameterName.Substring
(1))!
=-1)
commandParameter.Value=dataRow[commandParameter.ParameterName.Substring
(1)];
i++;
///将一个对象数组分配给SqlParameter参数数组.
///<
将要分配给存储过程参数的对象数组<
privatestaticvoidAssignParameterValues(SqlParameter[]commandParameters,object[]parameterValues)
if((commandParameters==null)||(parameterValues==null))
//确保对象数组个数与参数个数匹配,如果不匹配,抛出一个异常.
if(commandParameters.Length!
=parameterValues.Length)
thrownewArgumentException("
参数值个数与参数不匹配."
);
//给参数赋值
for(inti=0,j=commandParameters.Length;
i<
j;
i++)
//IfthecurrentarrayvaluederivesfromIDbDataParameter,thenassignitsValueproperty
if(parameterValues[i]isIDbDataParameter)
IDbDataParameterparamInstance=(IDbDataParameter)parameterValues[i];
if(paramInstance.Value==null)
commandParameters[i].Value=DBNull.Value;
else
commandParameters[i].Value=paramInstance.Value;
elseif(parameterValues[i]==null)
commandParameters[i].Value=parameterValues[i];
///预处理用户提供的命令,数据库连接/事务/命令类型/参数
要处理的SqlCommand<
数据库连接<
一个有效的事务或者是null值<
命令类型(存储过程,命令文本,其它.)<
存储过程名或都T-SQL命令文本<
和命令相关联的SqlParameter参数数组,如果没有参数为'
null'
<
c>
true<
/c>
如果连接是打开的,则为true,其它情况下为false.<
privatestaticvoidPrepareCommand(SqlCommandcommand,SqlConnectionconnection,SqlTransactiontransaction,CommandTypecommandType,stringcommandText,SqlParameter[]commandParameters,outboolmustClo