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.
15 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
17 // Permission is hereby granted, free of charge, to any person obtaining
18 // a copy of this software and associated documentation files (the
19 // "Software"), to deal in the Software without restriction, including
20 // without limitation the rights to use, copy, modify, merge, publish,
21 // distribute, sublicense, and/or sell copies of the Software, and to
22 // permit persons to whom the Software is furnished to do so, subject to
23 // the following conditions:
25 // The above copyright notice and this permission notice shall be
26 // included in all copies or substantial portions of the Software.
28 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
29 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
30 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
31 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
32 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
33 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
34 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
37 using System.Collections;
39 using System.Data.Common;
40 using System.ComponentModel;
42 namespace System.Data.OleDb
44 [ListBindable (false)]
45 [EditorAttribute ("Microsoft.VSDesigner.Data.Design.DBParametersEditor, "+ Consts.AssemblyMicrosoft_VSDesigner, "System.Drawing.Design.UITypeEditor, "+ Consts.AssemblySystem_Drawing)]
46 public sealed class OleDbParameterCollection :
48 DbParameterCollection, IList, ICollection, IDataParameterCollection
50 MarshalByRefObject, IDataParameterCollection, IList, ICollection, IEnumerable
55 ArrayList list = new ArrayList ();
61 internal OleDbParameterCollection ()
65 #endregion // Constructors
71 [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
78 get { return list.Count; }
82 [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
83 public new OleDbParameter this[int index] {
84 get { return (OleDbParameter) list[index]; }
85 set { list[index] = value; }
89 [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
90 public new OleDbParameter this[string parameterName] {
92 foreach (OleDbParameter p in list)
93 if (p.ParameterName.Equals (parameterName))
95 throw new IndexOutOfRangeException ("The specified name does not exist: " + parameterName);
98 if (!Contains (parameterName))
99 throw new IndexOutOfRangeException("The specified name does not exist: " + parameterName);
100 this [IndexOf (parameterName)] = value;
105 public override bool IsFixedSize {
107 return list.IsFixedSize;
111 public override bool IsReadOnly {
113 return list.IsReadOnly;
117 public override bool IsSynchronized {
119 return list.IsSynchronized;
123 public override object SyncRoot {
125 return list.SyncRoot;
130 bool IList.IsFixedSize {
131 get { return false; }
134 bool IList.IsReadOnly {
135 get { return false; }
138 bool ICollection.IsSynchronized {
139 get { return list.IsSynchronized; }
142 object ICollection.SyncRoot {
143 get { return list.SyncRoot; }
146 object IList.this[int index] {
147 get { return list[index]; }
148 set { list[index] = value; }
151 object IDataParameterCollection.this[string name] {
154 throw new NotImplementedException ();
158 throw new NotImplementedException ();
162 internal IntPtr GdaParameterList {
167 param_list = libgda.gda_parameter_list_new ();
168 // FIXME: add parameters to list
174 #endregion // Properties
179 [EditorBrowsable(EditorBrowsableState.Never)]
185 int Add (object value)
187 if (!(value is OleDbParameter))
188 throw new InvalidCastException ("The parameter was not an OleDbParameter.");
189 Add ((OleDbParameter) value);
190 return IndexOf (value);
193 public OleDbParameter Add (OleDbParameter parameter)
195 if (parameter.Container != null)
196 throw new ArgumentException ("The OleDbParameter specified in the value parameter is already added to this or another OleDbParameterCollection.");
197 parameter.Container = this;
198 list.Add (parameter);
203 [Obsolete("OleDbParameterCollection.Add(string, value) is now obsolete. Use OleDbParameterCollection.AddWithValue(string, object) instead.")]
204 [EditorBrowsable(EditorBrowsableState.Never)]
206 public OleDbParameter Add (string name, object value)
208 return Add (new OleDbParameter (name, value));
212 public OleDbParameter AddWithValue (string parameterName, object value)
214 return Add (new OleDbParameter (parameterName, value));
218 public OleDbParameter Add (string name, OleDbType type)
220 return Add (new OleDbParameter (name, type));
223 public OleDbParameter Add (string name, OleDbType type, int width)
225 return Add (new OleDbParameter (name, type, width));
228 public OleDbParameter Add (string name, OleDbType type, int width, string src_col)
230 return Add (new OleDbParameter (name, type, width, src_col));
234 public override void AddRange(Array values)
237 throw new ArgumentNullException ("values");
239 foreach (object value in values)
243 public void AddRange(OleDbParameter[] values)
246 throw new ArgumentNullException ("values");
248 foreach (OleDbParameter value in values)
259 foreach (OleDbParameter p in list)
268 bool Contains (object value)
270 if (!(value is OleDbParameter))
271 throw new InvalidCastException ("The parameter was not an OleDbParameter.");
272 return Contains (((OleDbParameter) value).ParameterName);
279 bool Contains (string value)
281 foreach (OleDbParameter p in list)
282 if (p.ParameterName.Equals (value))
288 public bool Contains (OleDbParameter value)
290 return IndexOf (value) != -1;
298 void CopyTo (Array array, int index)
300 list.CopyTo (array, index);
304 public void CopyTo(OleDbParameter[] array, int index)
306 CopyTo (array, index);
314 IEnumerator GetEnumerator()
316 return list.GetEnumerator ();
321 protected override DbParameter GetParameter (int index)
323 throw new NotImplementedException ();
327 protected override DbParameter GetParameter (string parameterName)
329 throw new NotImplementedException ();
337 int IndexOf (object value)
339 if (!(value is OleDbParameter))
340 throw new InvalidCastException ("The parameter was not an OleDbParameter.");
341 return IndexOf (((OleDbParameter) value).ParameterName);
345 public int IndexOf(OleDbParameter value)
347 return IndexOf (value);
355 int IndexOf (string parameterName)
357 for (int i = 0; i < Count; i += 1)
358 if (this [i].ParameterName.Equals (parameterName))
367 void Insert (int index, object value)
369 list.Insert (index, value);
373 public void Insert (int index, OleDbParameter value)
375 Insert (index, value);
383 void Remove (object value)
385 ((OleDbParameter) value).Container = null;
390 public void Remove (OleDbParameter value)
400 void RemoveAt (int index)
402 this [index].Container = null;
403 list.RemoveAt (index);
410 void RemoveAt (string parameterName)
412 RemoveAt (IndexOf (parameterName));
417 protected override void SetParameter (int index, DbParameter value)
419 throw new NotImplementedException ();
423 protected override void SetParameter (string parameterName, DbParameter value)
425 throw new NotImplementedException ();
429 #endregion // Methods