2016-10-01 1 views
-1

Код ниже берет данные на основе предоставленного имени пользователя и пароля в VS 2008. Когда я проверяю reader.FieldCount, он содержит все поля, которые он должен содержать , Вопрос, который у меня есть, - results.Add, который определен в верхней части файла как Dim results As List(Of String). Когда программа достигает этой строки, возникает исключение NullReferenceException, хотя я понятия не имею, почему..NET CE 2.0 Доступ к данным NullReferenceException при назначении полей БД в список (из T)

Программа предназначена для работы на MC9190-G и работает до этой точки в коде на устройстве. Я не использую эмулятор. код развертывается непосредственно на устройство для тестирования.

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 
+1

'results.Add = ec.Decrypt (pass_dec)' <- Значит ли это даже компилировать? Кроме того, прочитайте ключевое слово [** 'New' **] (https://msdn.microsoft.com/en-us/library/77s47661.aspx). –

+0

Все прекрасно компилируется. Я где-то пропустил новое ключевое слово? Я думал, что все правильно. –

+0

Эта линия все еще беспокоит меня, потому что она не должна. Во всяком случае, да, у вас отсутствует ключевое слово «New»; в объявлении вашего списка: 'Dim results As New List (Of String)'. Проверка списка с отладчиком после того, как ошибка была брошена, показала бы вам, что она равна нулю. –

ответ

0

Вы должны использовать ключевое слово New:

Dim results As New List(Of String) 
Смежные вопросы