2 // Mono.Data.SybaseClient.SybaseParameterCollection.cs
5 // Tim Coleman (tim@timcoleman.com)
7 // Copyright (C) Tim Coleman, 2002
11 using System.ComponentModel;
13 using System.Data.Common;
14 using System.Collections;
16 namespace Mono.Data.SybaseClient {
17 public sealed class SybaseParameterCollection : MarshalByRefObject, IDataParameterCollection, IList, ICollection, IEnumerable
19 private ArrayList parameterList = new ArrayList();
21 public IEnumerator GetEnumerator()
23 return parameterList.GetEnumerator ();
27 public int Add (object value)
29 // Call the add version that receives a SybaseParameter
31 // Check if value is a SybaseParameter.
33 Add((SybaseParameter) value);
35 return IndexOf (value);
39 public SybaseParameter Add (SybaseParameter value)
41 parameterList.Add (value);
46 public SybaseParameter Add (string parameterName, object value)
48 SybaseParameter sqlparam = new SybaseParameter();
49 sqlparam.Value = value;
50 // TODO: Get the dbtype and SybaseType from system type of value.
55 public SybaseParameter Add(string parameterName, SybaseType sqlDbType)
57 SybaseParameter sqlparam = new SybaseParameter();
58 sqlparam.ParameterName = parameterName;
59 sqlparam.SybaseType = sqlDbType;
63 public SybaseParameter Add(string parameterName,
64 SybaseType sqlDbType, int size)
66 SybaseParameter sqlparam = new SybaseParameter();
67 sqlparam.ParameterName = parameterName;
68 sqlparam.SybaseType = sqlDbType;
74 public SybaseParameter Add(string parameterName,
75 SybaseType sqlDbType, int size, string sourceColumn)
77 SybaseParameter sqlparam = new SybaseParameter();
78 sqlparam.ParameterName = parameterName;
79 sqlparam.SybaseType = sqlDbType;
81 sqlparam.SourceColumn = sourceColumn;
88 throw new NotImplementedException ();
92 public bool Contains(object value)
94 // Check if value is a SybaseParameter
96 return Contains(((SybaseParameter)value).ParameterName);
101 public bool Contains(string value)
103 for(int p = 0; p < parameterList.Count; p++) {
104 if(((SybaseParameter)parameterList[p]).ParameterName.Equals(value))
111 public void CopyTo(Array array, int index)
113 throw new NotImplementedException ();
117 public int IndexOf(object value)
119 // Check if value is a SybaseParameter
121 return IndexOf(((SybaseParameter)value).ParameterName);
125 public int IndexOf(string parameterName)
129 for(p = 0; p < parameterList.Count; p++) {
130 if(((SybaseParameter)parameterList[p]).ParameterName.Equals(parameterName))
137 public void Insert(int index, object value)
139 throw new NotImplementedException ();
143 public void Remove(object value)
145 throw new NotImplementedException ();
149 public void RemoveAt(int index)
151 throw new NotImplementedException ();
155 public void RemoveAt(string parameterName)
157 throw new NotImplementedException ();
163 return parameterList.Count;
167 object IList.this[int index] {
170 return (SybaseParameter) this[index];
175 this[index] = (SybaseParameter) value;
179 public SybaseParameter this[int index] {
181 return (SybaseParameter) parameterList[index];
185 parameterList[index] = (SybaseParameter) value;
189 object IDataParameterCollection.this[string parameterName] {
192 return this[parameterName];
198 this[parameterName] = (SybaseParameter) value;
202 public SybaseParameter this[string parameterName] {
204 for(int p = 0; p < parameterList.Count; p++) {
205 if(parameterName.Equals(((SybaseParameter)parameterList[p]).ParameterName))
206 return (SybaseParameter) parameterList[p];
208 throw new IndexOutOfRangeException("The specified name does not exist: " + parameterName);
212 for(int p = 0; p < parameterList.Count; p++) {
213 if(parameterName.Equals(((SybaseParameter)parameterList[p]).ParameterName))
214 parameterList[p] = value;
216 throw new IndexOutOfRangeException("The specified name does not exist: " + parameterName);
220 bool IList.IsFixedSize {
222 throw new NotImplementedException ();
226 bool IList.IsReadOnly {
228 throw new NotImplementedException ();
232 bool ICollection.IsSynchronized {
234 throw new NotImplementedException ();
238 object ICollection.SyncRoot {
240 throw new NotImplementedException ();
245 /// This method checks if the parameter value is of
246 /// SybaseParameter type. If it doesn't, throws an InvalidCastException.
248 private void CheckType(object value)
250 if(!(value is SybaseParameter))
251 throw new InvalidCastException("Only SQLParameter objects can be used.");