/* 2008 4 25 更新 */
我的数据访问函数库的源码。整个类有1400行,原先就是分开来写的,现在更新后还是分开来发一下吧。
第四部分:存储过程部分,包括存储过程的参数
,主要是对存储过程的参数的封装。
//存储过程的参数部分
#region 存储过程的参数部分——清除和添加参数
#region 清除参数
/// <summary>
/// 清除SqlCommand的存储过程的参数。
/// </summary>
public void ClearParameter()
{cm.Parameters.Clear();}
#endregion
//int: tinyint、smallint
//bigint:
//bool: bit
//double: float、real
//string: char、nchar、varchar、nvarchar、uniqueidentifier、smalldatetime、datetime
//string: ntext、text
//decimal:从 -10^38 +1 到 10^38 –1 的固定精度和小数位的数字数据。
//numeric:功能上等同于 decimal。
//decimal: smallmoney、money
//二进制
// binary、varbinary、image
#region 输入型的参数 int 、double、decimal、nvarChar、、、
#region int
/// <summary>
/// 添加int型的参数。
/// </summary>
/// <param name="ParameterName">参数名称。比如 @UserName</param>
/// <param name="ParameterValue">参数值</param>
public void addNewParameter(string ParameterName,int ParameterValue)
{
cm.Parameters.Add(ParameterName,SqlDbType.Int,); //添加存储过程的参数
cm.Parameters[ParameterName].Value=ParameterValue; //负值
//设置方向取默认值——输入
}
#endregion
#region double
/// <summary>
/// 添加小数参数,double
/// </summary>
/// <param name="ParameterName">参数名称。比如 @UserName</param>
/// <param name="ParameterValue">参数值</param>
public void addNewParameter(string ParameterName,double ParameterValue )
{
cm.Parameters.Add(ParameterName,SqlDbType.Float ); //添加存储过程的参数
cm.Parameters[ParameterName].Value=ParameterValue; //负值
}
#endregion
#region decimal
/// <summary>
/// 添加金额参数,方向是输入(input)。decimal
/// </summary>
/// <param name="ParameterName">参数名称。比如 @UserName</param>
/// <param name="ParameterValue">参数值</param>
public void addNewParameter(string ParameterName,decimal ParameterValue )
{
cm.Parameters.Add(ParameterName,SqlDbType.Decimal); //添加存储过程的参数
cm.Parameters[ParameterName].Value=ParameterValue; //负值
}
#endregion
#region nvarChar
/// <summary>
/// 添加nvarChar型的参数。方向是输入(input)
/// </summary>
/// <param name="ParameterName">参数名称。比如 @UserName</param>
/// <param name="ParameterValue">参数值</param>
/// <param name="size">参数大小</param>
public void addNewParameter(string ParameterName,string ParameterValue,int size)
{
cm.Parameters.Add(ParameterName,SqlDbType.NVarChar,size); //添加存储过程的参数
cm.Parameters[ParameterName].Value=ParameterValue; //负值
}
#endregion
#region nText
/// <summary>
/// 添加nText型的参数。方向是输入(input)
/// </summary>
/// <param name="ParameterName">参数名称。比如 @UserName</param>
/// <param name="ParameterValue">参数值</param>
public void addNewParameter(string ParameterName,string ParameterValue)
{
cm.Parameters.Add(ParameterName,SqlDbType.NText); //添加存储过程的参数
cm.Parameters[ParameterName].Value=ParameterValue; //负值
}
#endregion
#region bit
/// <summary>
/// 添加bit型的参数。方向是输入(input)
/// </summary>
/// <param name="ParameterName">参数名称。比如 @UserName</param>
/// <param name="ParameterValue">参数值</param>
public void addNewParameter(string ParameterName,bool ParameterValue)
{
cm.Parameters.Add(ParameterName,SqlDbType.Bit); //添加存储过程的参数
cm.Parameters[ParameterName].Value=ParameterValue; //负值
}
#endregion
#endregion
#region 输出型的参数
/// <summary>
/// 添加输出型的参数。只支持常用的几个参数类型,如果需要可以扩充。
/// </summary>
/// <param name="ParameterName">参数名称。比如 @UserName</param>
/// <param name="ParameterValue">参数的类型</param>
public void addNewParameter(string ParameterName,HBS.ParameterKind kind)
{
switch(kind)
{
case ParameterKind.Int :
cm.Parameters.Add(ParameterName,SqlDbType.Int); //添加存储过程的参数
break;
case ParameterKind.Double:
cm.Parameters.Add(ParameterName,SqlDbType.Float); //添加存储过程的参数
break;
case ParameterKind.Decimal :
cm.Parameters.Add(ParameterName,SqlDbType.Decimal); //添加存储过程的参数
break;
case ParameterKind.NVarChar :
cm.Parameters.Add(ParameterName,SqlDbType.NVarChar,); //添加存储过程的参数
break;
case ParameterKind.Bit :
cm.Parameters.Add(ParameterName,SqlDbType.Bit); //添加存储过程的参数
break;
}
cm.Parameters[ParameterName].Direction= ParameterDirection.Output; //设置方向
}
#endregion
#endregion
#region 存储过程的参数部分——取参数的返回值
/// <summary>
/// 按序号返回参数值,一般在执行完存储过程后使用
/// </summary>
/// <param name="ParameterIndex">序号</param>
/// <returns>返回参数的内容</returns>
public string getParameter(int ParameterIndex)
{
return cm.Parameters[ParameterIndex].Value.ToString();
}
/// <summary>
/// 按名称返回参数值,一般在执行完存储过程后使用
/// </summary>
/// <param name="ParameterName">参数名称。比如 @UserName</param>
/// <returns>返回参数的内容</returns>
public string getParameter(string ParameterName)
{
return cm.Parameters[ParameterName].Value.ToString();
}
#endregion
#region 存储过程的参数部分——修改参数值
/// <summary>
/// 按序号修改参数值,一般在一次添加多条记录时用。
/// </summary>
/// <param name="ParameterIndex">序号</param>
public void setParameter(int ParameterIndex,string parameterValue)
{ cm.Parameters[ParameterIndex].Value = parameterValue;}
/// <summary>
/// 按名称修改参数值,一般在一次添加多条记录时用
/// </summary>
/// <param name="ParameterName">参数名称。比如 @UserName</param>
public void setParameter(string ParameterName,string parameterValue)
{ cm.Parameters[ParameterName].Value = parameterValue;}
#endregion
//存储过程部分
#region 运行存储过程返回记录(DataSet、DataTable、不返回记录集)
/// <summary>
/// 运行存储过程返回DataSet。DataSet里面可以是多个表(DateTable)
/// </summary>
/// <param name="StoredProcedureName">存储过程名称</param>
/// <returns>返回DataSet</returns>
#region 函数实现 — — RunStoreDataSet
public DataSet RunStoreDataSet(string StoredProcedureName)
{
SetCommand(StoredProcedureName,); //设置command
SqlDataAdapter da = new SqlDataAdapter(cm);
try
{
DataSet DS = new DataSet();
da.Fill(DS);
return DS;
}
catch(Exception ex)
{
SetErrorMsg("RunStoreDataSet",StoredProcedureName,ex.Message ); //处理错误
return null;
}
finally
{
da.Dispose();
}
}
#endregion
/// <summary>
/// 运行存储过程返回DataTable。
/// </summary>
/// <param name="StoredProcedureName">存储过程名称</param>
/// <returns>返回DataTable</returns>
#region 函数实现 — — RunStoreDataTable
public DataTable RunStoreDataTable(string StoredProcedureName)
{
SetCommand(StoredProcedureName,); //设置command
SqlDataAdapter da = new SqlDataAdapter(cm);
try
{
DataTable dt = new DataTable();
da.Fill(dt);
return dt;
}
catch(Exception ex)
{
SetErrorMsg("RunStoreDataTable",StoredProcedureName,ex.Message ); //处理错误
return null;
}
finally
{
da.Dispose();
}
}
#endregion
/// <summary>
/// 运行存储过程 不返回记录集,用于添加、修改、删除等操作
/// </summary>
/// <param name="ParameterName">存储过程名称</param>
/// <returns></returns>
public void RunStore(string StoredProcedureName)
{
SetCommand(StoredProcedureName,); //设置command
try
{
if (cm.Connection.State == ConnectionState.Broken || cm.Connection.State == ConnectionState.Closed )
cm.Connection.Open();
cm.ExecuteNonQuery();
}
catch(Exception ex)
{
SetErrorMsg("RunStore",StoredProcedureName,ex.Message ); //处理错误
}
finally
{
if (!isUseTrans)
cm.Connection.Close();
}
}
#endregion
下载全部源文件。