2 // System.Data.OleDb.OleDbParameterCollection
5 // Rodrigo Moya (rodrigo@ximian.com)
6 // Tim Coleman (tim@timcoleman.com)
7 // Umadevi S (sumadevi@novell.com)
9 // Copyright (C) Rodrigo Moya, 2002
10 // Copyright (C) Tim Coleman, 2002
11 // Copyright (C) Novell Inc.
14 using System.Collections;
16 using System.Data.Common;
17 using System.ComponentModel;
19 namespace System.Data.OleDb
21 [ListBindable (false)]
22 [EditorAttribute ("Microsoft.VSDesigner.Data.Design.DBParametersEditor, "+ Consts.AssemblyMicrosoft_VSDesigner, "System.Drawing.Design.UITypeEditor, "+ Consts.AssemblySystem_Drawing )]
23 public sealed class OleDbParameterCollection : MarshalByRefObject,
24 IDataParameterCollection, IList, ICollection, IEnumerable
28 ArrayList list = new ArrayList ();
34 public OleDbParameterCollection () {
37 #endregion // Constructors
42 [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
44 get { return list.Count; }
48 [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
49 public OleDbParameter this[int index] {
50 get { return (OleDbParameter) list[index]; }
51 set { list[index] = value; }
55 [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
56 public OleDbParameter this[string parameterName] {
58 foreach (OleDbParameter p in list)
59 if (p.ParameterName.Equals (parameterName))
61 throw new IndexOutOfRangeException ("The specified name does not exist: " + parameterName);
64 if (!Contains (parameterName)) throw new IndexOutOfRangeException("The specified name does not exist: " + parameterName);
65 this [IndexOf (parameterName)] = value;
69 int ICollection.Count {
70 get { return list.Count; }
73 bool IList.IsFixedSize {
77 bool IList.IsReadOnly {
81 bool ICollection.IsSynchronized {
82 get { return list.IsSynchronized; }
85 object ICollection.SyncRoot {
86 get { return list.SyncRoot; }
89 object IList.this[int index] {
90 get { return list[index]; }
91 set { list[index] = value; }
94 object IDataParameterCollection.this[string name]
98 throw new NotImplementedException ();
102 throw new NotImplementedException ();
106 internal IntPtr GdaParameterList {
111 param_list = libgda.gda_parameter_list_new ();
112 // FIXME: add parameters to list
118 #endregion // Properties
122 public int Add (object value) {
123 if (!(value is OleDbParameter))
124 throw new InvalidCastException ("The parameter was not an OleDbParameter.");
125 Add ((OleDbParameter) value);
126 return IndexOf (value);
129 public OleDbParameter Add (OleDbParameter parameter)
131 if (parameter.Container != null)
132 throw new ArgumentException ("The OleDbParameter specified in the value parameter is already added to this or another OleDbParameterCollection.");
134 parameter.Container = this;
135 list.Add (parameter);
139 public OleDbParameter Add (string name, object value)
141 return Add (new OleDbParameter (name, value));
144 public OleDbParameter Add (string name, OleDbType type)
146 return Add (new OleDbParameter (name, type));
149 public OleDbParameter Add (string name, OleDbType type, int width)
151 return Add (new OleDbParameter (name, type, width));
154 public OleDbParameter Add (string name, OleDbType type,
155 int width, string src_col)
157 return Add (new OleDbParameter (name, type, width, src_col));
160 int IList.Add (object value)
162 if (!(value is IDataParameter))
163 throw new InvalidCastException ();
166 return list.IndexOf (value);
174 bool IList.Contains (object value)
176 return list.Contains (value);
179 bool IDataParameterCollection.Contains (string value)
181 for (int i = 0; i < list.Count; i++) {
182 IDataParameter parameter;
184 parameter = (IDataParameter) list[i];
185 if (parameter.ParameterName == value)
192 void ICollection.CopyTo (Array array, int index)
194 ((OleDbParameter[])(list.ToArray ())).CopyTo (array, index);
197 IEnumerator IEnumerable.GetEnumerator ()
199 return list.GetEnumerator ();
202 int IList.IndexOf (object value)
204 return list.IndexOf (value);
207 int IDataParameterCollection.IndexOf (string name)
209 return list.IndexOf (((IDataParameterCollection) this)[name]);
212 void IList.Insert (int index, object value)
214 list.Insert (index, value);
217 void IList.Remove (object value)
222 void IList.RemoveAt (int index)
224 list.Remove ((object) list[index]);
227 void IDataParameterCollection.RemoveAt (string name)
229 list.Remove (((IDataParameterCollection) this)[name]);
232 public void Clear() {
234 foreach (OleDbParameter p in list)
240 public bool Contains (object value) {
242 if (!(value is OleDbParameter))
243 throw new InvalidCastException ("The parameter was not an OleDbParameter.");
244 return Contains (((OleDbParameter) value).ParameterName);
247 public bool Contains (string value) {
249 foreach (OleDbParameter p in list)
250 if (p.ParameterName.Equals (value))
255 public void CopyTo (Array array, int index) {
257 list.CopyTo (array, index);
260 public IEnumerator GetEnumerator() {
262 return list.GetEnumerator ();
265 public int IndexOf (object value) {
267 if (!(value is OleDbParameter))
268 throw new InvalidCastException ("The parameter was not an OleDbParameter.");
269 return IndexOf (((OleDbParameter) value).ParameterName);
272 public int IndexOf (string parameterName) {
274 for (int i = 0; i < Count; i += 1)
275 if (this [i].ParameterName.Equals (parameterName))
280 public void Insert (int index, object value) {
282 list.Insert (index, value);
285 public void Remove (object value) {
287 ((OleDbParameter) value).Container = null;
291 public void RemoveAt (int index) {
293 this [index].Container = null;
294 list.RemoveAt (index);
297 public void RemoveAt (string parameterName) {
299 RemoveAt (IndexOf (parameterName));
303 #endregion // Methods