我的代码是从数据库读取值然后将它们放入数组中。我想将此数组的值复制到另一个数组,但是当我尝试时,它会继续抛出异常,
未将对象引用设置为对象的实例。
我似乎没有看到什么是错的。我该如何解决这个问题?
我的代码在这里:
' Read values from a database and assign them to an array
Dim counter As Integer = 0
Dim reader As MySqlDataReader
reader = cmd.ExecuteReader()
Dim dataarray As string()
While reader.Read()
Dim datatoAdd As string = reader.GetValue(1) & ", " & _
reader.GetValue(2) & ", " & _
reader.GetValue(3) & ", " & _
reader.GetValue(6) & ", " & _
reader.GetValue(7) & ", " & _
reader.GetValue(8) & ", " & _
reader.GetValue(9) & ", " & _
reader.GetValue(10) & ", " & _
reader.GetValue(11)
dataarray(counter) = datatoAdd
End While
reader.Close()
connection.Close()
MessageBox.Show('Data added successfully)
Catch ex As Exception
MessageBox.Show(ex.Message)
答案 0 :(得分:4)
您的陈述
Dim dataarray As string()
只是声明了 dataarray - 您定义dataarray
可以指向一个字符串数组。目前,它并不指向任何地方。您必须创建 new 数组并将其分配给dataarray
。
最简单的方法是在声明中指定数组的大小:
Dim dataarray(UPPER_BOUND) As String
这将创建一个索引为0到UPPER_BOUND的数组(即,使用UPPER_BOUND + 1个元素)。 (如果您还不知道上限,请不要使用数组,而是使用List(Of String)
。)
更多详情:
编辑:您在评论中说明您不知道数组的大小。在这种情况下,您根本不应该使用数组。 根据定义,数组是固定大小的数据结构。(是的,有ReDim Preserve
,但它仍然不是一个好主意。)
相反,请使用可调整大小的数据结构,例如List(Of String)
。如果你真的需要一个数组,那么之后你可以convert it into an array。
答案 1 :(得分:0)
VB数组从0开始而不是1不是吗?这可能是问题吗?