Код ниже берет данные на основе предоставленного имени пользователя и пароля в 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
'results.Add = ec.Decrypt (pass_dec)' <- Значит ли это даже компилировать? Кроме того, прочитайте ключевое слово [** 'New' **] (https://msdn.microsoft.com/en-us/library/77s47661.aspx). –
Все прекрасно компилируется. Я где-то пропустил новое ключевое слово? Я думал, что все правильно. –
Эта линия все еще беспокоит меня, потому что она не должна. Во всяком случае, да, у вас отсутствует ключевое слово «New»; в объявлении вашего списка: 'Dim results As New List (Of String)'. Проверка списка с отладчиком после того, как ошибка была брошена, показала бы вам, что она равна нулю. –