dbparamcollection.cs

来自「该项目中对 SQLHelper 类进行了简单封装」· CS 代码 · 共 157 行

CS
157
字号
/* 
 * DbParamCollection.cs @Microsoft Visual Studio 2005 <.NET Framework 2.0>
 * AfritXia
 * 2007-05-06
 * 
 * Copyright(c) http://www.AfritXia.NET/
 * 
 */

using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Data.Common;

namespace NET.AfritXia.DBUtility
{
	/// <summary>
	/// 数据库命令参数集合
	/// </summary>
	/// <typeparam name="TParam">数据库命令参数类型</typeparam>
	/// <typeparam name="TType">DbType 类型</typeparam>
	/// <example>
	/// <![CDATA[
	/// DbParamCollection<OleDbParameter, OleDbType> 
	/// parameters = new DbParamCollection<OleDbParameter, OleDbType>();]]>
	/// </example>
	public class DbParamCollection<TParam, TType> : CollectionBase 
		where TParam : DbParameter, new()
	{
		// 参数列表字典
		private Dictionary<string, TParam> m_paramsDict = new Dictionary<string, TParam>();

		#region 类 MyOleDbParamCollection 构造器
		/// <summary>
		/// 类 MyOleDbParamCollection 默认构造器
		/// </summary>
		public DbParamCollection()
			: base()
		{
		}
		#endregion

		/// <summary>
		/// 添加新的查询参数到集合中
		/// </summary>
		/// <param name="parameter">OleDb 查询参数对象</param>
		public void Add(TParam parameter)
		{
			// 添加查询参数到字典
			this.m_paramsDict.Add(parameter.ParameterName, parameter);

			// 添加查询参数到列表
			this.List.Add(parameter);
		}

		/// <summary>
		/// 添加新的查询参数到集合
		/// </summary>
		/// <param name="paramName">参数名称</param>
		/// <param name="dbType">数据类型</param>
		/// <param name="size">大小</param>
		/// <param name="direction">参数方向</param>
		/// <returns>数据库命令参数对象</returns>
		public TParam Add(string paramName, TType dbType, int size, ParameterDirection direction)
		{
			// 建立参数对象
			TParam param = Activator.CreateInstance(
				typeof(TParam), new object[]{ paramName, dbType, size }) as TParam;

			// 设置参数方向
			param.Direction = direction;

			// 添加参数到集合
			this.Add(param);

			return param;
		}

		/// <summary>
		/// 添加新的查询参数到集合
		/// </summary>
		/// <typeparam name="T">参数类型</typeparam>
		/// <param name="paramName">参数名称</param>
		/// <param name="dbType">数据类型</param>
		/// <param name="size">大小</param>
		/// <returns>数据库命令参数对象</returns>
		public TParam Add(string paramName, TType dbType, int size)
		{
			return this.Add(paramName, dbType, size, ParameterDirection.Input);
		}

		/// <summary>
		/// 添加新的查询参数到集合
		/// </summary>
		/// <param name="paramName">参数名称</param>
		/// <param name="dbType">数据类型</param>
		/// <returns>数据库命令参数对象</returns>
		public TParam Add(string paramName, TType dbType) 
		{
			return this.Add(paramName, dbType, -1, ParameterDirection.Input);
		}

		/// <summary>
		/// 添加新的查询参数到集合
		/// </summary>
		/// <param name="paramName">参数名称</param>
		/// <param name="value">参数值</param>
		/// <returns>数据库命令参数对象</returns>
		public TParam Add(string paramName, object value) 
		{
			// 建立参数对象
			TParam param = Activator.CreateInstance<TParam>();
			// 设置参数名称
			param.ParameterName = paramName;
			// 设置参数值
			param.Value = value;

			return param;
		}

		/// <summary>
		/// 通过索引器获取查询参数
		/// </summary>
		public TParam this[int index]
		{
			get
			{
				return this.List[index] as TParam;
			}
		}

		/// <summary>
		/// 通过索引器获取查询参数
		/// </summary>
		public TParam this[string parameterName]
		{
			get
			{
				return this.m_paramsDict[parameterName];
			}
		}

		/// <summary>
		/// 将集合转换成数组
		/// </summary>
		/// <returns>数据库命令参数对象数组</returns>
		public TParam[] ToArray()
		{
			// 将集合适配成数组集合
			ArrayList paramArray = ArrayList.Adapter(this.List);

			// 返回数组对象
			return (TParam[])(paramArray.ToArray(typeof(TParam)));
		}
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?