My Anna

Indias Biggest Engineering Education Community Enriching Students Minds with Latest Placement Papers, Study Materials, Fresher Jobs and Free E Books

A Unit of Aim Clear Technologies Ltd.
Search Study Materials, Jobs, Placement Papers, Interview Tips, Training Videos & More

Advertise with us

Who is online



Post new topic Reply to topic  [ 1 post ] 

sreenath
Super Moderator
Super Moderator
User avatar

Joined:
Wed Aug 26, 2009 10:01 pm
Beans: 1,227
In Bank: 14665
College: ESEC
Degree: M.Sc
Department: CSE
State: TN
Fav Quote: no pain no gain
 
#2
Sat Oct 03, 2009 2:52 pm
Post subject: Handling Null values Post
How is an easy way to guarantee the Nulls do not cause my program to raise an exception? Nulls can be the bane of the database programmer who does not plan for the inevitable Null value in a data set.

Obviously, the best way to ensure that unexpected Null values do not surprise you in a dataset is to impose validation rules in the database. However, it has been my sad experience to have exceptions raised by Null values when I had been ensured that they could not happen.

The following example code shows how to call three functions that I have written to automatically return a valid value (default according to datatype), even if the value retrieved from the database is Null. Assuming that DT is a DataTable with string, integer, and decimal values in it, the code shown below will not fail, even if Null values are encountered.


myString = MNS(dt.Rows(0).Item("string_field")
myInteger = MNI(dt.Rows(0).Item("integer_field")
myDecimal = MND(dt.Rows(0).Item("decimal_field")

The function calls will always return default, non Null values, even if the value returned in the datatset is Null. This may or may not mean that the program is performing correctly, depending on the requirement for the presence of valid data in the database field. However, it does guarantee that the program will not be caught off guard by the appearance of a Null value in the table.

A normal way to protect against this is shown below and is obviously much more cumbersome and mistake prone. Two ways are demonstrated, neither of which is desirable from my point of view. Obviously, they will run faster than the function calls shown above, but with the speed of today's computers, I maintain that conserving the time of the developer is much more important than worrying about a few machine cycles.

If dt.Rows(0).Item("string_field") Then
myString = String.Empty
Else
mystring = CType(dt.Rows(0).Item("string_field")
End If

myString = IIf(IsDBNull(dt.Rows(0).Item("string_field")), _
String.Empty, dt.Rows(0).Item("string_field"))

The code for the three functions is shown below in both VB and C#. You can take the development of other functions further yourself. A date function is needed, but the development of that function or functions will depend on what you want to return in the case of a Null date value.
VB.Net Code:

' Return 0 if object is null, else decimal value
Public Function MND(ByVal o As Object) As Decimal
If IsDBNull(o) Then
Return 0
Else
Return CType(o, Decimal)
End If
End Function

' Return 0 if null, else integer value of object.
Public Function MNI(ByVal i As Object) As Integer
If IsDBNull(i) Then
Return 0
Else
Return CType(i, Integer)
End If
End Function

''' Return String if object is not null, else return empty.string
Public Function MNS(ByVal s As Object) As String
If IsDBNull(s) Then
Return String.Empty
Else
Return CType(s, String)
End If
End Function


C# Code:

// return default value for integer if the object is null
public int MNI(object i)
{
if(i==null)
return 0;
else
return (int) i;
}

// return default value for decimal if the object is null
public decimal MND(object o)
{
if(o==null)
return 0;
else
return (decimal) o;
}

// return empty string if the object is null
public string MNS(object s)
{
if(s==null)
return string.Empty;
else
return (string) s;
}
_________________
sreenath@myanna.inImage


Profile E-mail
Offline

Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 1 post ] 
Bookmark & Share

Who is online

Users browsing this forum: No registered users and 0 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
cron
Powered by phpBB Group.

phpBB SEO