tags:

views:

1421

answers:

8

I have been getting an error in VB.net "object reference not set to an instance of object". Can you tell me what are the causes of this error? thanks..

+9  A: 

The object has not been initialized before use.

At the top of your code file type:

Option Strict On
Option Explicit On
Nescio
+2  A: 

In general, under the .NET runtime, such a thing happens whenever a variable that's unassigned or assigned the value Nothing (in VB.Net, null in C#) is dereferenced.

Option Strict On and Option Explicit On will help detect instances where this may occur, but it's possible to get a null/Nothing from another function call:

Dim someString As String = someFunctionReturningString();
If ( someString Is Nothing ) Then
   Sysm.Console.WriteLine(someString.Length); // will throw the NullReferenceException
End If

and the NullReferenceException is the source of the "object reference not set to an instance of an object".

Blair Conrad
A: 

actually, the user of my program reported that error. in my experience with the program, i always get that error only if my SQL query doesnt return any data or value (number value which i will use for computation).

i already simulated in my backup database with the same data but did not encountered the same error. i was thinking that the error maybe caused by something else..

sef
+1  A: 

You can put a logging mechanism in your application so you can isolate the cause of the error. An Exception object has the StackTrace property which is a string that describes the contents of the call stack, with the most recent method call appearing first. By looking at it, you'll have more details on what might be causing the exception.

Leon Tayson
+1  A: 

sef, If the problem is with Database return results, I presume it is in this scenario:

   dsData = getSQLData(conn,sql, blah,blah....)
   dt = dsData.Tables(0)  'Perhaps the obj ref not set is occurring here

To fix that:

  dsData = getSQLData(conn,sql, blah,blah....)
   If dsData.Tables.Count = 0 Then Exit Sub
   dt = dsData.Tables(0)  'Perhaps the obj ref not set is occurring here

edit: added code formatting tags ...

torial
You may want to use the code formatting tags for this answer.
brien
+1  A: 

And if you think it's occuring when no data is returned from a database query then maybe you should test the result before doing an operation on it?

Dim result As String = SqlCommand.ExecuteScalar()   'just for scope'
If result Is Nothing OrElse IsDBNull(result) Then
    'no result!'
End If
Mark Glorie
+1  A: 

When working with databases, you can get this error when you try to get a value form a field or row which doesn't exist. i.e. if you're using datasets and you use:

Dim objDt as DataTable = objDs.Tables("tablename")

you get the object "reference not set to an instance of object" if tablename doesn't exists in the Dataset. The same for rows or fields in the datasets.

Eduardo Campañó
A: 

tnx a lot guys.. ^_^

sef