QueryParameterCollection.cs 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Collections;
  4. using System.Text;
  5. using System.Data;
  6. using System.Data.Common;
  7. using System.Data.SqlClient;
  8. namespace Ant.Data
  9. {
  10. /// <summary>
  11. /// 参数集合
  12. /// </summary>
  13. public class QueryParameterCollection:MarshalByRefObject,IEnumerable,IEnumerator
  14. {
  15. private int position;
  16. private List<QueryParameter> item;
  17. public QueryParameterCollection()
  18. {
  19. item = new List<QueryParameter>();
  20. position = -1;
  21. }
  22. public QueryParameterCollection(int capacity)
  23. {
  24. item = new List<QueryParameter>(capacity);
  25. position = -1;
  26. }
  27. public QueryParameter Add(QueryParameter parameter)
  28. {
  29. item.Add(parameter);
  30. return item[item.Count - 1];
  31. }
  32. public QueryParameter Add(string parameterName, object Value)
  33. {
  34. QueryParameter parameter = new QueryParameter(parameterName,Value);
  35. item.Add(parameter);
  36. return item[item.Count - 1];
  37. }
  38. public QueryParameter Add(string parameterName, DbType dbType)
  39. {
  40. QueryParameter parameter = new QueryParameter(parameterName, dbType);
  41. item.Add(parameter);
  42. return parameter;
  43. }
  44. public QueryParameter Add(string parameterName, DbType dbType, object value)
  45. {
  46. QueryParameter parameter = new QueryParameter();
  47. parameter.ParameterName = parameterName;
  48. parameter.DbType = dbType;
  49. parameter.Value = value;
  50. item.Add(parameter);
  51. return item[item.Count - 1];
  52. }
  53. public QueryParameter Add(string parameterName, DbType dbType,int size, string sourceColumn)
  54. {
  55. QueryParameter parameter = new QueryParameter(parameterName, dbType,size, sourceColumn);
  56. item.Add(parameter);
  57. return item[item.Count - 1];
  58. }
  59. public QueryParameter Add(string parameterName, DbType dbType, int size, ParameterDirection direction, bool isNullable, byte precision, byte scale, string sourceColumn, DataRowVersion sourceVersion, object Value)
  60. {
  61. QueryParameter parameter = new QueryParameter(parameterName, dbType,size, direction, isNullable,precision,scale,sourceColumn, sourceVersion, Value);
  62. item.Add(parameter);
  63. return item[item.Count - 1];
  64. }
  65. public int Count
  66. {
  67. get
  68. {
  69. return item.Count;
  70. }
  71. }
  72. public QueryParameter this[int index]
  73. {
  74. get
  75. {
  76. return (QueryParameter) item[index];
  77. }
  78. set
  79. {
  80. item[index] = value;
  81. }
  82. }
  83. public QueryParameter this[string parameterName]
  84. {
  85. get
  86. {
  87. return (QueryParameter) item[this.IndexOf(parameterName)];
  88. }
  89. set
  90. {
  91. item[this.IndexOf(parameterName)] = value;
  92. }
  93. }
  94. /// <summary>
  95. /// 返回参数在集合中的位置
  96. /// </summary>
  97. /// <param name="parameterName"></param>
  98. /// <returns></returns>
  99. public int IndexOf(string parameterName)
  100. {
  101. int index = -1;
  102. for (int i = 0; i < item.Count; i++)
  103. {
  104. if (item[i].ParameterName.Equals(parameterName))
  105. {
  106. index = i;
  107. break;
  108. }
  109. }
  110. return index;
  111. }
  112. /// <summary>
  113. /// 清除所有参数
  114. /// </summary>
  115. public void Clear()
  116. {
  117. item.Clear();
  118. position = -1;
  119. }
  120. #region IEnumerable 成员
  121. IEnumerator IEnumerable.GetEnumerator()
  122. {
  123. return this;
  124. }
  125. #endregion
  126. #region IEnumerator 成员
  127. public object Current
  128. {
  129. get { return this.item[position]; }
  130. }
  131. public bool MoveNext()
  132. {
  133. if (position < this.item.Count-1)
  134. {
  135. position++;
  136. return true;
  137. }
  138. else
  139. {
  140. return false;
  141. }
  142. }
  143. public void Reset()
  144. {
  145. position = -1;
  146. }
  147. #endregion
  148. }
  149. }