>>>I have a method that needs to return either OleDbDataReader or SqlDataReader (depends on the back-end database). Within the method I have IF/ELSE where the code is processed accordingly. But in the method signature I can only specify one type of reader. E.g.
>>>
>>>public OleDbDataReader MethodName()
>>>or
>>>public SqlDataReader MethodName()
>>>
>>>
>>>Does it mean that I have to split the method into two methods depending on the type of reader I need to return and deal with it at the calling level?
>>
>>You need to go generic. Here is an example:
>>
>>
>> Private oCommand As IDbCommand = Nothing
>> Private oCommandText As New Collection
>> Private oDataAdapter As IDbDataAdapter = Nothing
>> Private oDataParameter As IDbDataParameter = Nothing
>> Private oDataReader As IDataReader = Nothing
>>
>>
>>Then, you can use the same properties no matter your backend.
>
>Thank you. Does it mean that in the signature of the method I will have
>
>public oDataReader MethodName()
>
No, it will be
public IDataReader MethodName() // that returns DataReader object
But do you need to return data reader back? You will not be able to use using then, I think?
If it's not broken, fix it until it is.
My Blog