Search code examples
sql.netvb.netwindows-cecompact-framework2.0

.NET CE 2.0 Data Access NullReferenceException when assigning DB fields to List(of T)


The code below grabs data based on a provided username and password in VS 2008. When I Check the reader.FieldCount it contains all of the fields it should contain. The issue I am having is at results.Add, which is defined at the top of the file as Dim results As List(Of String). When the program reaches that line, a NullReferenceException is thrown, though I have no idea why.

The program is meant to run on an MC9190-G and works up to that point in the code on the device. I am not using an emulator. the code is deployed directly to the device for testing.

    Public Function getUser(ByVal username As String, ByVal password As String)
    Dim ecif As New EncryptionInfo
    Dim ec As New Encryption(ecif.key, ecif.iv)
    Dim pass_dec, temp As String
    Dim i As Integer
    connect()
    query = "SELECT * FROM UserInfo WHERE Username = '" + username.ToString + "'"
    comm = New SqlCommand(query, cn)
    Dim reader As SqlDataReader = comm.ExecuteReader

    If (reader.FieldCount <> 0) Then
        i = 0
        reader.Read()
        While (i < reader.FieldCount)
            If (i = 1) Then
                pass_dec = reader.GetString(i)
                results.Add = ec.Decrypt(pass_dec)
                Continue While
                i += 1
            End If
            temp = reader.Item(i).ToString
            results.Add(temp)
            i += 1
        End While
        reader.Close()
        cn.Close()
        comm.Dispose()
        Return results
    End If


    MessageBox.Show("No results")
    Return Nothing



    End Function

Solution

  • You should use the keyword New:

    Dim results As New List(Of String)