Hi David,
Did you mean that the exception was thrown from FunctionA()? If so, you
have to use a Try block in FunctionA().
Please try to write FunctionA() as the code snippet I wrote in my last
post, and put it in a Try block. If any exception is thrown, it will be
caught in the Catch block.
Try
command.Connection.Open();
Object o = com.ExecuteScalar();
com.Connection.Close();
if(o != null && o != System.DBNull.Value)
return (Int32)o;
else
return 0;
Catch
return 0;
In my code 0 is the error code. No exception will be thrown out of
FunctionA().
Kevin Yu
=======
"This posting is provided "AS IS" with no warranties, and confers no
rights."
--------------------
| From: " David N" <
[email protected]>
| References: <
[email protected]>
<
[email protected]>
<
[email protected]>
| Subject: Re: Undefined Value
| Date: Mon, 6 Oct 2003 09:41:58 -0700
| Lines: 149
| X-Priority: 3
| X-MSMail-Priority: Normal
| X-Newsreader: Microsoft Outlook Express 6.00.2800.1158
| X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1165
| Message-ID: <
[email protected]>
| Newsgroups: microsoft.public.dotnet.languages.csharp
| NNTP-Posting-Host: pat-50.bel.netiq.com 65.219.170.50
| Path: cpmsftngxa06.phx.gbl!TK2MSFTNGP08.phx.gbl!TK2MSFTNGP12.phx.gbl
| Xref: cpmsftngxa06.phx.gbl microsoft.public.dotnet.languages.csharp:189299
| X-Tomcat-NG: microsoft.public.dotnet.languages.csharp
|
| Yeap! when the function returns a null object, the caller will have
| exception error without an opportunity to examine the object. That is
| exactly what I have in FunctionA(), which returns a null object class to
| FunctionB() - the caller. The call to
|
| SingleValue = FunctionA(); generates the exception error.
|
|
| // Have no chance to examine the SingleValue
| if(SingleValue == dbnull)
| .....
| ...
|
|
|
|
|
| | > Hi David,
| >
| > I'm sorry that I made a mistake in my former post. If the return value
of
| > the function is a Int32 type. We cannot use
| >
| > else
| > return null;
| >
| > Because Int32 is a value ype.
| >
| > Sorry for my mistake.
| >
| > Kevin Yu
| > =======
| > "This posting is provided "AS IS" with no warranties, and confers no
| > rights."
| >
| > --------------------
| > | X-Tomcat-ID: 46502818
| > | References: <
[email protected]>
| > | MIME-Version: 1.0
| > | Content-Type: text/plain
| > | Content-Transfer-Encoding: 7bit
| > | From: (e-mail address removed) (Kevin Yu)
| > | Organization: Microsoft
| > | Date: Mon, 06 Oct 2003 02:47:42 GMT
| > | Subject: RE: Undefined Value
| > | X-Tomcat-NG: microsoft.public.dotnet.languages.csharp
| > | Message-ID: <
[email protected]>
| > | Newsgroups: microsoft.public.dotnet.languages.csharp
| > | Lines: 60
| > | Path: cpmsftngxa06.phx.gbl
| > | Xref: cpmsftngxa06.phx.gbl
| microsoft.public.dotnet.languages.csharp:189132
| > | NNTP-Posting-Host: TOMCATIMPORT1 10.201.218.122
| > |
| > | Hi David,
| > |
| > | IDbCommand.ExecuteScalar Method returns the first column of the first
| row
| > | in the resultset. If there are no rows returned from your command, a
| null
| > | reference is returned. If the first column of the first row is a
(Null)
| > | value, a System.DBNull object is returned. So, if you want to
determine
| > if
| > | any object is returned from the ExecuteScalar() method, you can try
the
| > | following codes:
| > |
| > | command.Connection.Open();
| > | Object o = com.ExecuteScalar();
| > | com.Connection.Close();
| > | if(o != null && o != System.DBNull.Value)
| > | return (Int32)o;
| > | else
| > | return null;
| > |
| > | Does this answer your question? If anything is unclear, please feel
free
| > to
| > | reply to the post.
| > |
| > | Kevin Yu
| > | =======
| > | "This posting is provided "AS IS" with no warranties, and confers no
| > | rights."
| > |
| > | --------------------
| > | | From: " David N" <
[email protected]>
| > | | Subject: Undefined Value
| > | | Date: Sun, 5 Oct 2003 15:40:25 -0700
| > | | Lines: 37
| > | | X-Priority: 3
| > | | X-MSMail-Priority: Normal
| > | | X-Newsreader: Microsoft Outlook Express 6.00.2800.1158
| > | | X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1165
| > | | Message-ID: <
[email protected]>
| > | | Newsgroups: microsoft.public.dotnet.languages.csharp
| > | | NNTP-Posting-Host: pat-50.bel.netiq.com 65.219.170.50
| > | | Path: cpmsftngxa06.phx.gbl!TK2MSFTNGP08.phx.gbl!tk2msftngp13.phx.gbl
| > | | Xref: cpmsftngxa06.phx.gbl
| > microsoft.public.dotnet.languages.csharp:189108
| > | | X-Tomcat-NG: microsoft.public.dotnet.languages.csharp
| > | |
| > | |
| > | | Hi All,
| > | |
| > | | What is a best way to handle an undefined value object class that
| > returned
| > | | from a function. I have a function that call the ADO.NET
| > ExecuteScalar()
| > | | function and returns the object to the calling function as follow:
| > | |
| > | |
| > | | public object FunctionA()
| > | | {
| > | | object RetVal;
| > | | ... some preparation code here
| > | |
| > | |
| > | | RetVal = ExecuteScalar(); // This one execute a stored
procedure
| > | | which can return an empty column
| > | |
| > | | Return RetVal;
| > | | }
| > | |
| > | |
| > | | public int FunctionB()
| > | | {
| > | | object SingleValue;
| > | | ... some code here
| > | |
| > | |
| > | | SingleValue = FunctionA();
| > | | }
| > | |
| > | | The call to the FunctionA works only if the ExecuteScalar() returns
a
| > | value.
| > | | If the stored procedure returns an empty column value, and then the
| > call
| > | to
| > | | the FunctionA() breaks out with an exception...
| > | |
| > | | Any thoughts????
| > | |
| > | |
| > | |
| > |
| > |
| >
|
|
|