Sunday, February 19, 2012

<undefined value>

Greetings,

I asked this question over on the ADO.NET newsgroup and couldn't scrape
up an answer. I realize that it is more of an ADO question than an SQL
Server question, but I'm hoping there might be an ADO programmer here
that can explain this to me.

I'm developing database applications using C# on VS.NET 2003 and SQL
Server Standard edition (SP3a).

I've run into a situation I'm trying to understand, to wit, if I submit
a query using SqlCommand.ExecuteScalar which returns no results, why is
the returned item a System.Object of <undefined value>?

(Actually, I think I know why -- ExecuteScalar returns a null reference
if there are no results.)

How do I do test for that condition?

I guess I can sort of see why they didn't want to throw an exception --
lot's of queries don't return any results, but on the other hand, I
can't figure out how to test for <undefined value>, either.

Any ideas?

-- Rick> How do I do test for that condition?

Object myScalarResult = myCommand.ExecuteScalar();
if ( myScalarResult == null )
{
// no result returned
}

--
Hope this helps.

Dan Guzman
SQL Server MVP

--------
SQL FAQ links (courtesy Neil Pike):

http://www.ntfaq.com/Articles/Index...epartmentID=800
http://www.sqlserverfaq.com
http://www.mssqlserver.com/faq
--------

"Guinness Mann" <GMann@.dublin.com> wrote in message
news:MPG.19edf588afa984d79896f5@.news.newsguy.com.. .
> Greetings,
> I asked this question over on the ADO.NET newsgroup and couldn't
scrape
> up an answer. I realize that it is more of an ADO question than an
SQL
> Server question, but I'm hoping there might be an ADO programmer here
> that can explain this to me.
> I'm developing database applications using C# on VS.NET 2003 and SQL
> Server Standard edition (SP3a).
> I've run into a situation I'm trying to understand, to wit, if I
submit
> a query using SqlCommand.ExecuteScalar which returns no results, why
is
> the returned item a System.Object of <undefined value>?
> (Actually, I think I know why -- ExecuteScalar returns a null
reference
> if there are no results.)
> How do I do test for that condition?
> I guess I can sort of see why they didn't want to throw an
exception --
> lot's of queries don't return any results, but on the other hand, I
> can't figure out how to test for <undefined value>, either.
> Any ideas?
> -- Rick|||In article <pV4hb.9598$mQ2.8310@.newsread1.news.atl.earthlink.n et>,
danguzman@.nospam-earthlink.net says...
> > How do I do test for that condition?
> Object myScalarResult = myCommand.ExecuteScalar();
> if ( myScalarResult == null )
> {
> // no result returned
> }

Sheesh. Simple enough once you know the answer, eh? Thanks!

Here's what I've been doing:

Object myScalarResult = myCommand.ExecuteScalar();
int returnValue = Convert.ToInt32(myScalarResult);

Which returns 0 if null, otherwise the Int32 I'm looking for.
Fortuitously, 0 is not in the possible solution set, so by coincidence,
it works.

Thanks again,

-- Rick

No comments:

Post a Comment