2
0

SqlParameterCollection.cs 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267
  1. //
  2. // System.Data.SqlClient.SqlParameterCollection.cs
  3. //
  4. // Author:
  5. // Rodrigo Moya ([email protected])
  6. // Daniel Morgan ([email protected])
  7. //
  8. // (C) Ximian, Inc 2002
  9. //
  10. using System;
  11. using System.ComponentModel;
  12. using System.Data;
  13. using System.Data.Common;
  14. using System.Collections;
  15. namespace System.Data.SqlClient
  16. {
  17. /// <summary>
  18. /// Collects all parameters relevant to a Command object
  19. /// and their mappings to DataSet columns.
  20. /// </summary>
  21. // public sealed class SqlParameterCollection : MarshalByRefObject,
  22. // IDataParameterCollection, IList, ICollection, IEnumerable
  23. public sealed class SqlParameterCollection : IDataParameterCollection,
  24. IList
  25. {
  26. private ArrayList parameterList = new ArrayList();
  27. [MonoTODO]
  28. public IEnumerator GetEnumerator()
  29. {
  30. throw new NotImplementedException ();
  31. }
  32. public int Add( object value)
  33. {
  34. // Call the add version that receives a SqlParameter
  35. // Check if value is a SqlParameter.
  36. CheckType(value);
  37. Add((SqlParameter) value);
  38. return IndexOf (value);
  39. }
  40. public SqlParameter Add(SqlParameter value)
  41. {
  42. parameterList.Add(value);
  43. return value;
  44. }
  45. public SqlParameter Add(string parameterName, object value)
  46. {
  47. SqlParameter sqlparam = new SqlParameter();
  48. sqlparam.Value = value;
  49. // TODO: Get the dbtype and Sqldbtype from system type of value.
  50. return Add(sqlparam);
  51. }
  52. public SqlParameter Add(string parameterName, SqlDbType sqlDbType)
  53. {
  54. SqlParameter sqlparam = new SqlParameter();
  55. sqlparam.ParameterName = parameterName;
  56. sqlparam.SqlDbType = sqlDbType;
  57. return Add(sqlparam);
  58. }
  59. public SqlParameter Add(string parameterName,
  60. SqlDbType sqlDbType, int size)
  61. {
  62. SqlParameter sqlparam = new SqlParameter();
  63. sqlparam.ParameterName = parameterName;
  64. sqlparam.SqlDbType = sqlDbType;
  65. sqlparam.Size = size;
  66. return Add(sqlparam);
  67. }
  68. public SqlParameter Add(string parameterName,
  69. SqlDbType sqlDbType, int size, string sourceColumn)
  70. {
  71. SqlParameter sqlparam = new SqlParameter();
  72. sqlparam.ParameterName = parameterName;
  73. sqlparam.SqlDbType = sqlDbType;
  74. sqlparam.Size = size;
  75. sqlparam.SourceColumn = sourceColumn;
  76. return Add(sqlparam);
  77. }
  78. [MonoTODO]
  79. public void Clear()
  80. {
  81. throw new NotImplementedException ();
  82. }
  83. public bool Contains(object value)
  84. {
  85. // Check if value is a SqlParameter
  86. CheckType(value);
  87. return Contains(((SqlParameter)value).ParameterName);
  88. }
  89. [MonoTODO]
  90. public bool Contains(string value)
  91. {
  92. for(int p = 0; p < parameterList.Count; p++) {
  93. if(((SqlParameter)parameterList[p]).ParameterName.Equals(value))
  94. return true;
  95. }
  96. return false;
  97. }
  98. [MonoTODO]
  99. public void CopyTo(Array array, int index)
  100. {
  101. throw new NotImplementedException ();
  102. }
  103. public int IndexOf(object value)
  104. {
  105. // Check if value is a SqlParameter
  106. CheckType(value);
  107. return IndexOf(((SqlParameter)value).ParameterName);
  108. }
  109. public int IndexOf(string parameterName)
  110. {
  111. int p = -1;
  112. for(p = 0; p < parameterList.Count; p++) {
  113. if(((SqlParameter)parameterList[p]).ParameterName.Equals(parameterName))
  114. return p;
  115. }
  116. return p;
  117. }
  118. [MonoTODO]
  119. public void Insert(int index, object value)
  120. {
  121. throw new NotImplementedException ();
  122. }
  123. [MonoTODO]
  124. public void Remove(object value)
  125. {
  126. throw new NotImplementedException ();
  127. }
  128. [MonoTODO]
  129. public void RemoveAt(int index)
  130. {
  131. throw new NotImplementedException ();
  132. }
  133. [MonoTODO]
  134. public void RemoveAt(string parameterName)
  135. {
  136. throw new NotImplementedException ();
  137. }
  138. [MonoTODO]
  139. public int Count {
  140. get {
  141. return parameterList.Count;
  142. }
  143. }
  144. object IList.this[int index] {
  145. [MonoTODO]
  146. get {
  147. return (SqlParameter) this[index];
  148. }
  149. [MonoTODO]
  150. set {
  151. this[index] = (SqlParameter) value;
  152. }
  153. }
  154. public SqlParameter this[int index] {
  155. get {
  156. return (SqlParameter) parameterList[index];
  157. }
  158. set {
  159. parameterList[index] = (SqlParameter) value;
  160. }
  161. }
  162. object IDataParameterCollection.this[string parameterName] {
  163. [MonoTODO]
  164. get {
  165. return this[parameterName];
  166. }
  167. [MonoTODO]
  168. set {
  169. CheckType(value);
  170. this[parameterName] = (SqlParameter) value;
  171. }
  172. }
  173. public SqlParameter this[string parameterName] {
  174. get {
  175. for(int p = 0; p < parameterList.Count; p++) {
  176. if(parameterName.Equals(((SqlParameter)parameterList[p]).ParameterName))
  177. return (SqlParameter) parameterList[p];
  178. }
  179. throw new IndexOutOfRangeException("The specified name does not exist: " + parameterName);
  180. }
  181. set {
  182. for(int p = 0; p < parameterList.Count; p++) {
  183. if(parameterName.Equals(((SqlParameter)parameterList[p]).ParameterName))
  184. parameterList[p] = value;
  185. }
  186. throw new IndexOutOfRangeException("The specified name does not exist: " + parameterName);
  187. }
  188. }
  189. bool IList.IsFixedSize {
  190. get {
  191. throw new NotImplementedException ();
  192. }
  193. }
  194. bool IList.IsReadOnly {
  195. get {
  196. throw new NotImplementedException ();
  197. }
  198. }
  199. bool ICollection.IsSynchronized {
  200. get {
  201. throw new NotImplementedException ();
  202. }
  203. }
  204. object ICollection.SyncRoot {
  205. get {
  206. throw new NotImplementedException ();
  207. }
  208. }
  209. /// <summary>
  210. /// This method checks if the parameter value is of
  211. /// SqlParameter type. If it doesn't, throws an InvalidCastException.
  212. /// </summary>
  213. private void CheckType(object value)
  214. {
  215. if(!(value is SqlParameter))
  216. throw new InvalidCastException("Only SQLParameter objects can be used.");
  217. }
  218. }
  219. }