On 4/23/07, Peter Osucha <***@proteindiscovery.com> wrote:
> This one sp I'm calling actually returns 4 datasets. So my C# code
> processed the first dataset and then goes into this while (
> dr.NextResult ( ) ) loop. Before the loop, I set a counter variable
>From the information you gave, a switch seems to be "overgeneralised"
without any benefit.
Is this your code?
int i = 0;
do
{
switch(i)
{
case 0: // handle 1st data
case 1: // handle 2nd data
case 2: // handle 3rd data
case 3: // handle 4th data
default: // throw exception (unexpected) ;)
}
i++;
} while ( dr.NextResult());
Personally I would prefer
// handle 1st data
if ( !dr.NextResult()) // throw exception
// handle 2nd data
if ( !dr.NextResult()) // throw exception
// handle 3rd data
if ( !dr.NextResult()) // throw exception
// handle 4th data
Since the order is hard coded in your SP, it make sense to hard code
it in your C# code as well, the switch makes it hard to read, IMO
// Ryan
On 4/23/07, Peter Osucha <***@proteindiscovery.com> wrote:
> David,
>
> I fixed the sps this morning - yes, your suggestion was the right one.
> However, I'm still hoping for a bit more. Perhaps you have another
> suggestion?
>
> This one sp I'm calling actually returns 4 datasets. So my C# code
> processed the first dataset and then goes into this while (
> dr.NextResult ( ) ) loop. Before the loop, I set a counter variable
> (loopIdx) to '1' - loopIdx gets incremented each time a 'NextResult' is
> found. I then use a Switch() block to act on the specific NextResult
> DataSet. It seems like there should be a better way to check the
> dataset I'm working with then just using this loopIdx arrangement where
> I, as a developer, need to 'remember' the order of the returned
> DataSets.
>
> Peter
>
>
> -----Original Message-----
> From: Discussion relating to the specifics of the C# and Managed C++
> languages [mailto:DOTNET-***@DISCUSS.DEVELOP.COM] On Behalf Of Peter
> Osucha
> Sent: Saturday, April 21, 2007 9:01 PM
> To: DOTNET-***@DISCUSS.DEVELOP.COM
> Subject: Re: [DOTNET-CX] ADO.NET, Sql2K5 - true hack...
>
> Yes, David. Indeed it does. I didn't even think of that. That makes
> much
> more sense.
>
> Thanks.
>
> Peter(--;)
>
> -----Original Message-----
> From: Discussion relating to the specifics of the C# and Managed C++
> languages [mailto:DOTNET-***@DISCUSS.DEVELOP.COM] On Behalf Of David L.
> Penton
> Sent: Saturday, April 21, 2007 4:38 PM
> To: DOTNET-***@DISCUSS.DEVELOP.COM
> Subject: Re: [DOTNET-CX] ADO.NET, Sql2K5 - true hack...
>
> Is there some reason why you can't return an empty resultset in the
> cases
> where there is nothing to return for sets #2 and #3? That seems like a
> better thing to do.
>
> &_david++;
>
> Peter Osucha wrote:
> > This seems like a true 'hack'. Perhaps someone can give me a better
> > way to do this.
> >
> > I have an SQL2K5 sp that returns up to 3 datasets (before telling me
> > to not return more than 1 dataset, please let me know of a better way
> > to do this! J). The first dataset is always returned. Due to the
> > arguments used to call the sp, there is a chance that the normal
> > 'second' dataset won't be returned, the normal 'third' dataset won't
> > be returned, or that neither the normal 'second' nor the normal
> > 'third' dataset will be returned.
> >
> > In order to tell in my C# app which dataset I am working with (I keep
> > looking for new datasets with a
> >
> > 'while ( dr.NextResult ( ) ) {}'
> >
> > block of code), I am using a 'hack' of adding an extra column to the
> > returned dataset ('FromTabel1' or 'FromTable2', etc.) so that I can
> > check the datareader.GetOrdinal() to see which dataset I am really
> > dealing with.
> >
> > If I have explained well enough what I am doing, can someone please
> > provide me a better way to check a returned dataSet for my purpose?
> >
> > Peter
>
> ===================================
> This list is hosted by DevelopMentor(r) http://www.develop.com
>
> View archives and manage your subscription(s) at http://discuss.develop.com
>
===================================
This list is hosted by DevelopMentor® http://www.develop.com
View archives and manage your subscription(s) at http://discuss.develop.com