NET CE 2.0数据访问NullReferenceException将数据库字段分配给List(of T)

问题描述:

下面的代码根据VS 2008中提供的用户名和密码获取数据。当我检查reader.FieldCount时,它包含它应包含的所有字段。我遇到的问题是results.Add,它在文件顶部定义为Dim results As List(Of String)。当程序到达那条线时,抛出一个NullReferenceException,尽管我不知道为什么。NET CE 2.0数据访问NullReferenceException将数据库字段分配给List(of 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)'

+0

一切都完美编译。我在某处丢失了一个新的关键字吗?我以为我正确地宣布了一切。 –

+0

该行仍然困扰着我,因为它不应该。无论如何,是的,你在某处丢失了一个'New'关键字;在你的列表声明中:'Dim results As New List(Of String)'。一旦错误发生,使用调试器检查列表会告诉你它是空的。 –

你应该使用关键字New

Dim results As New List(Of String)