PC Review


Reply
Thread Tools Rate Thread

How Can an Integer Contain a Null Value?

 
 
TC
Guest
Posts: n/a
 
      14th Oct 2003
What does it mean for an integer to have a null value? I am trying to use
the DataView.Find method. That method has an integer return type which
contains the "index of the row in the DataView containing the sort key value
specified; otherwise a null value if the sort key value does not exist."

By "null value", does it mean System.DBNull? (I thought only objects could
evaluate to System.DBNull.) How can I test whether an integer variable holds
a null value?


-TC


 
Reply With Quote
 
 
 
 
Cor
Guest
Posts: n/a
 
      14th Oct 2003
Hi TC,
> What does it mean for an integer to have a null value? I am trying to use
> the DataView.Find method. That method has an integer return type which
> contains the "index of the row in the DataView containing the sort key

value
> specified; otherwise a null value if the sort key value does not exist."
>
> By "null value", does it mean System.DBNull? (I thought only objects could
> evaluate to System.DBNull.) How can I test whether an integer variable

holds
> a null value?


My first thought of the answer was a value can never be "nothing" or
"dbnull".

(This is dangerous stuff, because I once had an argue here about what is
difficult about English language and then I said by instance the definition
of words like null.)

So don't look to much on the words I use, just at the meaning.

But then I saw that you are probably talking about a database integer, what
is a total different thing. It is a placeholder for an integer. That can be
empty or dbnull

Just beneath your message you see a message with executeScalar.

Sthephany did send yesterday an example for drygast how to use that. I saw
it yesterday too the first time for the answer beneath I don't know if it
fit. For you I think it does.

I pasted it in beneath

\\\
You are using a reader and that will have a record if it exist and it will
have no records if it does not exist. Your issue is with the fact that you
are not handling the situation when the reader has no records.

Change track a little and use ExecuteScalar() against the command object
with the sql changed to:

select count(*) from [order] where ordernummer=" & txtOrdernummer.Text

The result will be 1 if the order exists and 0 if it does not.

So the test becomes:

If cmd.ExecuteScalar() = 0 Then
' Order does not exist
Else
' Order does exist
End If
///
I hope this helps a little bit.

Cor


 
Reply With Quote
 
Armin Zingler
Guest
Posts: n/a
 
      14th Oct 2003
"TC" <(E-Mail Removed)> schrieb
> What does it mean for an integer to have a null value? I am trying to
> use the DataView.Find method. That method has an integer return type
> which contains the "index of the row in the DataView containing the
> sort key value specified; otherwise a null value if the sort key
> value does not exist."
>
> By "null value", does it mean System.DBNull? (I thought only objects
> could evaluate to System.DBNull.) How can I test whether an integer
> variable holds a null value?


The word "null" can have two different meanings depending on the context. In
the Framework and for the CLR (docs), Null is the term for "no reference".
The equivalent term in VB.NET is Nothing. When talking about "Null" in a
database, it means DBNull (resp. DBNull.Value). It might get confusing when
you get a message from the framework that deals with database stuff. In this
case, we have to be clever enough to recognize what is meant by the word
"Null".

Talking in the VB.NET context: An Integer variable can neither be Nothing
nor it can be DBNull. (in a C# context I'd have to say: An Integer variable
can neither be Null nor it can be DBNull). Whenever the variable is related
to a database value and it can be DBNull or an Integer, the type must be
"Object". Only variables declared as Object can either contain DBNull or a
(boxed) Integer. You can not set an Integer variable to DBNull (you could
set it to Nothing, but that's equal to setting it to zero (and actually it
should not be allowed because it's only confusing)). If the variable is
declared as Object, you can use

If theValue Is DBNull.VAlue then
msgbox "database field contains Null"
else
msgbox theValue
end if

The first msgbox could also show
msgbox "database field contains DBNull"
but in the given context ("database field...") it's sufficient to show
"Null" in the message.


--
Armin

 
Reply With Quote
 
Jay B. Harlow [MVP - Outlook]
Guest
Posts: n/a
 
      14th Oct 2003
TC,
In addition to the others comments.

According to David Sceppa's book "Microsoft ADO.NET - Core Reference" from
MS Press, DataView.Find returns -1 if the desired row is not found. Which is
consistent with other similar searching type methods found in the framework.

Running a quick test confirms that DataView.Find returns a -1 when the key
is not found.

If you are using ADO.NET, I would recommend David's book.

Hope this helps
Jay

"TC" <(E-Mail Removed)> wrote in message news:W5Mib.4869$iq3.1202@okepread01...
> What does it mean for an integer to have a null value? I am trying to use
> the DataView.Find method. That method has an integer return type which
> contains the "index of the row in the DataView containing the sort key

value
> specified; otherwise a null value if the sort key value does not exist."
>
> By "null value", does it mean System.DBNull? (I thought only objects could
> evaluate to System.DBNull.) How can I test whether an integer variable

holds
> a null value?
>
>
> -TC
>
>



 
Reply With Quote
 
TC
Guest
Posts: n/a
 
      14th Oct 2003
Cor,

Thank you for the reply. In fact, I was asking about a system integer, not a
database integer. It seems that the problem arises from incorrect/ambiguous
syntax in the VB.NET documentation. Instead of saying the Find method
returns an integer "null value", the documentation should say it returns the
value -1.

-TC


"Cor" <(E-Mail Removed)> wrote in message
news:3f8b9ae6$0$19185$(E-Mail Removed)...
> Hi TC,
> > What does it mean for an integer to have a null value? I am trying to

use
> > the DataView.Find method. That method has an integer return type which
> > contains the "index of the row in the DataView containing the sort key

> value
> > specified; otherwise a null value if the sort key value does not exist."
> >
> > By "null value", does it mean System.DBNull? (I thought only objects

could
> > evaluate to System.DBNull.) How can I test whether an integer variable

> holds
> > a null value?

>
> My first thought of the answer was a value can never be "nothing" or
> "dbnull".
>
> (This is dangerous stuff, because I once had an argue here about what is
> difficult about English language and then I said by instance the

definition
> of words like null.)
>
> So don't look to much on the words I use, just at the meaning.
>
> But then I saw that you are probably talking about a database integer,

what
> is a total different thing. It is a placeholder for an integer. That can

be
> empty or dbnull
>
> Just beneath your message you see a message with executeScalar.
>
> Sthephany did send yesterday an example for drygast how to use that. I saw
> it yesterday too the first time for the answer beneath I don't know if it
> fit. For you I think it does.
>
> I pasted it in beneath
>
> \\\
> You are using a reader and that will have a record if it exist and it will
> have no records if it does not exist. Your issue is with the fact that you
> are not handling the situation when the reader has no records.
>
> Change track a little and use ExecuteScalar() against the command object
> with the sql changed to:
>
> select count(*) from [order] where ordernummer=" & txtOrdernummer.Text
>
> The result will be 1 if the order exists and 0 if it does not.
>
> So the test becomes:
>
> If cmd.ExecuteScalar() = 0 Then
> ' Order does not exist
> Else
> ' Order does exist
> End If
> ///
> I hope this helps a little bit.
>
> Cor



 
Reply With Quote
 
TC
Guest
Posts: n/a
 
      14th Oct 2003
Armin,

> The word "null" can have two different meanings depending on the

context...

It seems that the word "null" can have a third meaning too. In the online
documentation for the TreeView.Find method, "null value" apparently means
the integer value -1.

-TC


 
Reply With Quote
 
TC
Guest
Posts: n/a
 
      14th Oct 2003
Jay,

Thank you. That solves the mystery.

-TC


"Jay B. Harlow [MVP - Outlook]" <(E-Mail Removed)> wrote in message
news:%(E-Mail Removed)...
> TC,
> In addition to the others comments.
>
> According to David Sceppa's book "Microsoft ADO.NET - Core Reference" from
> MS Press, DataView.Find returns -1 if the desired row is not found. Which

is
> consistent with other similar searching type methods found in the

framework.
>
> Running a quick test confirms that DataView.Find returns a -1 when the key
> is not found.
>
> If you are using ADO.NET, I would recommend David's book.
>
> Hope this helps
> Jay
>
> "TC" <(E-Mail Removed)> wrote in message news:W5Mib.4869$iq3.1202@okepread01...
> > What does it mean for an integer to have a null value? I am trying to

use
> > the DataView.Find method. That method has an integer return type which
> > contains the "index of the row in the DataView containing the sort key

> value
> > specified; otherwise a null value if the sort key value does not exist."
> >
> > By "null value", does it mean System.DBNull? (I thought only objects

could
> > evaluate to System.DBNull.) How can I test whether an integer variable

> holds
> > a null value?
> >
> >
> > -TC



 
Reply With Quote
 
Armin Zingler
Guest
Posts: n/a
 
      14th Oct 2003
"TC" <(E-Mail Removed)> schrieb
> Armin,
>
> > The word "null" can have two different meanings depending on the

> context...
>
> It seems that the word "null" can have a third meaning too. In the
> online documentation for the TreeView.Find method, "null value"
> apparently means the integer value -1.


To me it seems to be a documentation fault.


--
Armin

 
Reply With Quote
 
Luca Minudel
Guest
Posts: n/a
 
      15th Oct 2003

Actually the .NET Framework don't let you set Null
(Nothing in VB) to an int, a bool, a DateTime, etc.

So BCL functions cannot return Null value for built-in
types.

If you need to set Null (Nothing in VB) to an int, a bool,
a DateTime, ... you can use NullableTypes:
http://nullabletypes.sourceforge.net/

bye (luKa)


 
Reply With Quote
 
Jay B. Harlow [MVP - Outlook]
Guest
Posts: n/a
 
      15th Oct 2003
Luca,
> Actually the .NET Framework don't let you set Null
> (Nothing in VB) to an int, a bool, a DateTime, etc.

However! VB.NET treats Nothing as the default value for any type.

<blockquote>
Nothing is a special literal; it does not have a type and is convertible to
all types in the type system. When converted to a particular type, it is the
equivalent of the default value of that type.
</blockquote>

http://msdn.microsoft.com/library/de...BSpec2_4_7.asp

In other words, if you assign Nothing to an Integer that integer is set to
the 'default' value for an Integer which is Zero!

Try it!
Dim i as Integer = Nothing
Dim b As Boolean = Nothing
Dim c As Char = Nothing
Dim pt As Point = Nothing

If you run the above you will find each value has the defaults for that
value. (0, False, Char.MinValue (which the debugger displays as Nothing)).
Seeing as Point is a structure, the default for Point is the default for
each of its members, in other words pt.x = 0 & pt.y = 0.

Hope this helps
Jay


"Luca Minudel" <(E-Mail Removed)> wrote in message
news:2b57d01c3930b$ed903480$(E-Mail Removed)...
>
> Actually the .NET Framework don't let you set Null
> (Nothing in VB) to an int, a bool, a DateTime, etc.
>
> So BCL functions cannot return Null value for built-in
> types.
>
> If you need to set Null (Nothing in VB) to an int, a bool,
> a DateTime, ... you can use NullableTypes:
> http://nullabletypes.sourceforge.net/
>
> bye (luKa)
>
>



 
Reply With Quote
 
 
 
Reply

Thread Tools
Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
How do I assign null to an integer? susan.fitzpatrick@cubic.com Microsoft C# .NET 1 2nd Oct 2006 11:19 PM
null value integer ypul Microsoft ASP .NET 1 18th Aug 2005 12:43 PM
Assigning null value to an integer =?Utf-8?B?Um95?= Microsoft VB .NET 4 12th May 2005 08:17 PM
How to insert a integer = 0 into database to be null =?Utf-8?B?Sm9l?= Microsoft ADO .NET 1 22nd Jul 2004 06:00 AM
Binding INTEGER and use of NULL =?Utf-8?B?UmF5bW9uZA==?= Microsoft ADO .NET 2 20th Feb 2004 09:51 AM


Features
 

Advertising
 

Newsgroups
 


All times are GMT +1. The time now is 10:50 PM.