473,508 Members | 2,312 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

NullReferenceException when trying to fill an array

Hi,

I am fairly new to programming and and even newer to dotnet. I appoligise in advance if this is a dumb questions, and I would appreciate if you could answer it anyways. :)

I am writing a windows service wich sends emails to customers at a specific time. My app retrieves cities and the city's associated time from a database, waits until the specified time for each city and sends out the appropriate emails. Below is some code that is generating a NullReferenceException which I haven't been able to debug. Please help!

Friend Class RgsDbConnection

Private rgsConn As SqlConnection
Private goTimes() As Date
Private locales() As String
Private _numLocales As Integer

....

Private Sub GetLocalesAndTimes()

Dim cmd As SqlDataAdapter
Dim rsData As New DataSet
Dim i As Integer

'Get a list of all locales and their email/fax sending time
cmd = New SqlDataAdapter("SELECT zonename, EmailFaxTime " _
& "FROM dbo.tblzone", me.rgsConn)
cmd.Fill(rsData, "LocalesAndTimes")

'Get number of locales
me._numLocales = rsData.Tables("LocalesAndTimes").Rows.Count

For i = 0 To me._numLocales - 1
'fill array with locales
Dim log as EventLog = New EventLog()
Try
'This next line is the one that causes the error
Me.locales(i) = _
rsData.Tables("LocalesAndTimes").Rows(i).Item("zon ename")
Catch e As Exception
log.WriteEntry("RGS Email & Fax Sender", _
rsData.Tables("LocalesAndTimes").Rows(i).Item("zon ename").ToString())
log.WriteEntry("RGS Email & Fax Sender", e.ToString)
End Try
'fill array with sending times
' me.goTimes(i) = _
' rsData.Tables("LocalesAndTimes").Rows(i).Item("Ema ilFaxTime")
Next i
End Sub
....

End Class

In the "For...Next" block you will notice a "Try" block. Inside the try block
is the single line of code that is causing the problem.

You'll notice in the catch block I write to the application event log twice (for each iteration of the for...next block). When I look at the event log, there are two entries for every record in my db, one stating the zonename and one with the error, which reads:
"System.NullReferenceException: Object reference not set to an instance of an object.
at RgsEmailSenderSpace.RgsDbConnection.GetLocalesAndT imes()"

Thanks in advance for your help.
fabio
Jul 21 '05 #1
5 2621
Try this:

If Not ISDBNULL(rsData.Tables("LocalesAndTimes").Rows(i). Item("zonename")
) Then
me.locales(1) = rsData.Tables("LocalesAndTimes").Rows(i).Item("zon ename")

Or this:

Debug.Assert(Not IsDBNull(rsData.Tables("LocalesAndTimes").Rows(i). Item("zonename")
))

If the assertion fails, you have a null value. This link will also show you a possible method to deal with it http://www.knowdotnet.com/testsite/nullvalues.html

You can also IIF that statement with the same logic and give it a different value.
"Fabio Papa" <fa****@hotmail.com> wrote in message news:bv*******************@news1.telusplanet.net.. .
Hi,

I am fairly new to programming and and even newer to dotnet. I appoligise in advance if this is a dumb questions, and I would appreciate if you could answer it anyways. :)

I am writing a windows service wich sends emails to customers at a specific time. My app retrieves cities and the city's associated time from a database, waits until the specified time for each city and sends out the appropriate emails. Below is some code that is generating a NullReferenceException which I haven't been able to debug. Please help!

Friend Class RgsDbConnection

Private rgsConn As SqlConnection
Private goTimes() As Date
Private locales() As String
Private _numLocales As Integer

...

Private Sub GetLocalesAndTimes()

Dim cmd As SqlDataAdapter
Dim rsData As New DataSet
Dim i As Integer

'Get a list of all locales and their email/fax sending time
cmd = New SqlDataAdapter("SELECT zonename, EmailFaxTime " _
& "FROM dbo.tblzone", me.rgsConn)
cmd.Fill(rsData, "LocalesAndTimes")

'Get number of locales
me._numLocales = rsData.Tables("LocalesAndTimes").Rows.Count

For i = 0 To me._numLocales - 1
'fill array with locales
Dim log as EventLog = New EventLog()
Try
'This next line is the one that causes the error
Me.locales(i) = _
rsData.Tables("LocalesAndTimes").Rows(i).Item("zon ename")
Catch e As Exception
log.WriteEntry("RGS Email & Fax Sender", _
rsData.Tables("LocalesAndTimes").Rows(i).Item("zon ename").ToString())
log.WriteEntry("RGS Email & Fax Sender", e.ToString)
End Try
'fill array with sending times
' me.goTimes(i) = _
' rsData.Tables("LocalesAndTimes").Rows(i).Item("Ema ilFaxTime")
Next i
End Sub
...

End Class

In the "For...Next" block you will notice a "Try" block. Inside the try block
is the single line of code that is causing the problem.

You'll notice in the catch block I write to the application event log twice (for each iteration of the for...next block). When I look at the event log, there are two entries for every record in my db, one stating the zonename and one with the error, which reads:
"System.NullReferenceException: Object reference not set to an instance of an object.
at RgsEmailSenderSpace.RgsDbConnection.GetLocalesAndT imes()"

Thanks in advance for your help.
fabio
Jul 21 '05 #2
"Fabio Papa" <fa****@hotmail.com> schrieb
Private locales() As String
[...]
'This next line is the one that causes the error
Me.locales(i) = _
rsData.Tables("LocalesAndTimes").Rows(i).Item("zon ename")

You did not create an array of strings. Variable locales contains Nothing.
Use Redim to create an array.
--
Armin

Jul 21 '05 #3
Hi William, thanks for your help. However there are no nulls in the db (it's a test db with only five records that I have verified). Further, when i write the city to the event log (as in my catch block), or try to assign it to another variable (one that is not a member variable array), it works just fine (I can see the cities listed in the event log). Another piece to the puzzle is that the sdk documentation says this about the NullReferenceException exception:

"Note that applications throw the ArgumentNullException exception rather than the NullReferenceException exception discussed here. The following Microsoft intermediate language (MSIL) instructions throw NullReferenceException: ........"

From the little that I know about IL, it looks like the exception is being thrown by the stelem.ref instruction in my compiled code.
fabio
"William Ryan" <do********@comcast.nospam.net> wrote in message news:Oe*************@TK2MSFTNGP09.phx.gbl...
Try this:

If Not ISDBNULL(rsData.Tables("LocalesAndTimes").Rows(i). Item("zonename")
) Then
me.locales(1) = rsData.Tables("LocalesAndTimes").Rows(i).Item("zon ename")

Or this:

Debug.Assert(Not IsDBNull(rsData.Tables("LocalesAndTimes").Rows(i). Item("zonename")
))

If the assertion fails, you have a null value. This link will also show you a possible method to deal with it http://www.knowdotnet.com/testsite/nullvalues.html

You can also IIF that statement with the same logic and give it a different value.
"Fabio Papa" <fa****@hotmail.com> wrote in message news:bv*******************@news1.telusplanet.net.. .
Hi,

I am fairly new to programming and and even newer to dotnet. I appoligise in advance if this is a dumb questions, and I would appreciate if you could answer it anyways. :)

I am writing a windows service wich sends emails to customers at a specific time. My app retrieves cities and the city's associated time from a database, waits until the specified time for each city and sends out the appropriate emails. Below is some code that is generating a NullReferenceException which I haven't been able to debug. Please help!

Friend Class RgsDbConnection

Private rgsConn As SqlConnection
Private goTimes() As Date
Private locales() As String
Private _numLocales As Integer

...

Private Sub GetLocalesAndTimes()

Dim cmd As SqlDataAdapter
Dim rsData As New DataSet
Dim i As Integer

'Get a list of all locales and their email/fax sending time
cmd = New SqlDataAdapter("SELECT zonename, EmailFaxTime " _
& "FROM dbo.tblzone", me.rgsConn)
cmd.Fill(rsData, "LocalesAndTimes")

'Get number of locales
me._numLocales = rsData.Tables("LocalesAndTimes").Rows.Count

For i = 0 To me._numLocales - 1
'fill array with locales
Dim log as EventLog = New EventLog()
Try
'This next line is the one that causes the error
Me.locales(i) = _
rsData.Tables("LocalesAndTimes").Rows(i).Item("zon ename")
Catch e As Exception
log.WriteEntry("RGS Email & Fax Sender", _
rsData.Tables("LocalesAndTimes").Rows(i).Item("zon ename").ToString())
log.WriteEntry("RGS Email & Fax Sender", e.ToString)
End Try
'fill array with sending times
' me.goTimes(i) = _
' rsData.Tables("LocalesAndTimes").Rows(i).Item("Ema ilFaxTime")
Next i
End Sub
...

End Class

In the "For...Next" block you will notice a "Try" block. Inside the try block
is the single line of code that is causing the problem.

You'll notice in the catch block I write to the application event log twice (for each iteration of the for...next block). When I look at the event log, there are two entries for every record in my db, one stating the zonename and one with the error, which reads:
"System.NullReferenceException: Object reference not set to an instance of an object.
at RgsEmailSenderSpace.RgsDbConnection.GetLocalesAndT imes()"

Thanks in advance for your help.
fabio
Jul 21 '05 #4
That worked! Thank you Armin.
"Armin Zingler" <az*******@freenet.de> wrote in message
news:ew**************@TK2MSFTNGP10.phx.gbl...
"Fabio Papa" <fa****@hotmail.com> schrieb
Private locales() As String
[...]
'This next line is the one that causes the error
Me.locales(i) = _
rsData.Tables("LocalesAndTimes").Rows(i).Item("zon ename")

You did not create an array of strings. Variable locales contains Nothing.
Use Redim to create an array.
--
Armin

Jul 21 '05 #5
redim your locals and goTimes arrays. Unless I am mistaken, they do
not automaticly do this

'Get number of locales
me._numLocales = rsData.Tables("LocalesAndTimes").Rows.Count
redim goTimes(_numlocals-1)
redim locales(_numlocals-1)

On Tue, 23 Sep 2003 15:18:31 GMT, "Fabio Papa" <fa****@hotmail.com>
wrote:
Hi,

I am fairly new to programming and and even newer to dotnet. I appoligise in advance if this is a dumb questions, and I would appreciate if you could answer it anyways. :)

I am writing a windows service wich sends emails to customers at a specific time. My app retrieves cities and the city's associated time from a database, waits until the specified time for each city and sends out the appropriate emails. Below is some code that is generating a NullReferenceException which I haven't been able to debug. Please help!

Friend Class RgsDbConnection

Private rgsConn As SqlConnection
Private goTimes() As Date
Private locales() As String
Private _numLocales As Integer

...

Private Sub GetLocalesAndTimes()

Dim cmd As SqlDataAdapter
Dim rsData As New DataSet
Dim i As Integer

'Get a list of all locales and their email/fax sending time
cmd = New SqlDataAdapter("SELECT zonename, EmailFaxTime " _
& "FROM dbo.tblzone", me.rgsConn)
cmd.Fill(rsData, "LocalesAndTimes")

'Get number of locales
me._numLocales = rsData.Tables("LocalesAndTimes").Rows.Count

For i = 0 To me._numLocales - 1
'fill array with locales
Dim log as EventLog = New EventLog()
Try
'This next line is the one that causes the error
Me.locales(i) = _
rsData.Tables("LocalesAndTimes").Rows(i).Item("zon ename")
Catch e As Exception
log.WriteEntry("RGS Email & Fax Sender", _
rsData.Tables("LocalesAndTimes").Rows(i).Item("zon ename").ToString())
log.WriteEntry("RGS Email & Fax Sender", e.ToString)
End Try
'fill array with sending times
' me.goTimes(i) = _
' rsData.Tables("LocalesAndTimes").Rows(i).Item("Ema ilFaxTime")
Next i
End Sub
...

End Class

In the "For...Next" block you will notice a "Try" block. Inside the try block
is the single line of code that is causing the problem.

You'll notice in the catch block I write to the application event log twice (for each iteration of the for...next block). When I look at the event log, there are two entries for every record in my db, one stating the zonename and one with the error, which reads:
"System.NullReferenceException: Object reference not set to an instance of an object.
at RgsEmailSenderSpace.RgsDbConnection.GetLocalesAndT imes()"

Thanks in advance for your help.
fabio


Jul 21 '05 #6

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

3
1724
by: msnews.microsoft.com | last post by:
actaully the code i have written below is pretty simple and short. no idea why it terminate at run-time with "An unhandled exception of type 'System.NullReferenceException' occurred" Thank you ...
3
5020
by: Ryan Liu | last post by:
Hi there, I got a NullReferenceException when delete last row in a datagrid. I had hard time to solve since it does not occur in my own code. I put a datagrid in my inherited user control,...
1
4081
by: msnews.microsoft.com | last post by:
I'm trying to fill an array of objects but when I add the first object I get a NullReferenceException. ----------------------------------------------------------------------------...
2
2723
by: sxiao | last post by:
Hi, there I got a NullReferenceException when there are more than one users trying to open the same page at the same time. The senerio is: Two users logged into the web application using the...
6
22199
by: William Mild | last post by:
I must be getting brain fried. I can't see the error. Create a new web form with the following code begind: Public Class test Inherits System.Web.UI.Page Public Class ReportCardData ...
5
3780
by: Fabio Papa | last post by:
Hi, I am fairly new to programming and and even newer to dotnet. I appoligise in advance if this is a dumb questions, and I would appreciate if you could answer it anyways. :) I am writing a...
5
6587
by: ducky801 | last post by:
Hi all. When i run the code below i get a 'NullReferenceException was unhandled' error. I am using VB 2005 Express. I'm confused about this because, I have declared my array and i'm trying to...
0
2273
by: schoultzy | last post by:
Hello Everyone, I have been trying to figure this one out for two days now. I have created a DataGridView which is populated by an ObjectDataSource. My problem occurs when I attempt to use the...
0
7225
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
0
7123
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...
1
7046
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows...
0
7498
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each...
0
5627
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing,...
1
5053
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome a new...
0
4707
by: conductexam | last post by:
I have .net C# application in which I am extracting data from word file and save it in database particularly. To store word all data as it is I am converting the whole word file firstly in HTML and...
0
1557
by: 6302768590 | last post by:
Hai team i want code for transfer the data from one system to another through IP address by using C# our system has to for every 5mins then we have to update the data what the data is updated ...
0
418
bsmnconsultancy
by: bsmnconsultancy | last post by:
In today's digital era, a well-designed website is crucial for businesses looking to succeed. Whether you're a small business owner or a large corporation in Toronto, having a strong online presence...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.