Monday, March 12, 2012

How to Convert from OleDbParametersCollection to OleDbParameter[] array?

I am trying to convert from OleDbParametersCollection object to OleDbParameter[] array. How to perform this operation(ConvertToOleDbParameter())?

What is the problem with the following code? :

Code Snippet

private OleDbParameter[] ConvertToOleDbParameter(OleDbParameterCollection paramCollection)

{

OleDbParameter[] paramArray = new OleDbParameter[paramCollection.Count];

OleDbParameter param = new OleDbParameter();

paramArray.Initialize();

IEnumerator enumParams = paramCollection.GetEnumerator();

for (int i = 0; i < paramCollection.Count; i++)

{

try

{

enumParams.MoveNext();

param = (OleDbParameter) enumParams.Current;

paramArray[i] = param;

}

catch (Exception e)

{

MessageBox.Show(e.Message);

}

}

return paramArray;

}

So, when I do following:

Code Snippet

//....

try

{

OleDbParameter[] arrParams = ConvertToOleDbParameter(paramCollection);

oleCommand.Parameters.AddRange(arrParams);

oleCommand.ExecuteNonQuery();

return true;

}

catch (Exception exc)

{

System.Windows.Forms.MessageBox.Show(exc.Message);

return false;

}

The above throws the following exception:

The OleDbParameter is already contained by another OleDbParameterCollection.

I would appreciate your help.

Thanks.

oleCommand.Parameters is also a OledDbParameterCollection. Your conversion method merely returns an array whose elements are references of the existing parameters in paramCollection. The AddRange() call tries to add those parameters in paramCollection to another parametercollection (oleCommand.Parameters).

The error message tells you that for any parameter, it can only belong to one parametercollection.

Labels: , , , , , , , , ,

0 Comments:

Post a Comment

Subscribe to Post Comments [Atom]

<< Home