QueryParameterCollection.cs 4.4 KB

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