nullreferenceexception when trying to fill an array of strings

F

Fabio Papa

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 Shared goTimes() As Date
Private Shared locales() As String
Private Shared _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("zonename")
Catch e As Exception
log.WriteEntry("RGS Email & Fax Sender", _
rsData.Tables("LocalesAndTimes").Rows(i).Item("zonename").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("EmailFaxTime")
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. Thanks in advance
for your help.


fabio
 
J

Jim Blizzard [MSFT]

Hi Fabio,

Thanks for posting to the newsgroup.

You declare the string array locales, but you never give it a size. You can
do this one of two ways.

1) when you declare it, such as
Private Shared locales(20) As String

or an easier way 2) after you've declared it, but before you use it the
first time, such as
ReDim locales(Me._numLocales)

You would place the ReDim statement just after you get the number of locales
from the table.

Hope this helps,
bliz

--
Jim Blizzard, MCSD .NET
http://snowstormlife.com/blog
Community Developer Evangelist
Microsoft

Your Potential. Our Passion.

This posting is provided as is, without warranty, and confers no rights.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,995
Messages
2,570,226
Members
46,815
Latest member
treekmostly22

Latest Threads

Top