【发布时间】:2009-11-23 03:17:00
【问题描述】:
我正在尝试创建两个数组,其中填充了来自数据库中两个表的一组字符串,然后比较它们。例如:
array1[0]="1101" 和
array2[0]="0110"
如果两个相应的字符都等于 1,则执行一个动作。但是当我运行此代码时,我收到错误:索引超出了数组的范围。 System.IndexOutOfRangeException。
出于某种原因,我认为问题区域在于以下两个陈述:
comparestringa = userintarray(x) 和
comparestringb = eventintarray(x)
当我将它们注释掉时,错误不会显示。
myconnect = New SqlConnection("xxxx")
Dim Table1 As New SqlCommand("SELECT * FROM Table1", myconnect)
Dim Table2 As New SqlCommand("SELECT * FROM Table2", myconnect)
Dim array1 As New ArrayList
Dim array2 As New ArrayList
Table1.Connection.Open()
Dim r As SqlDataReader
r = Table1.ExecuteReader(CommandBehavior.CloseConnection)
While r.Read
array1.Add(r(1).ToString())
array1.Add(r(2).ToString())
array1.Add(r(3).ToString())
array1.Add(r(4).ToString())
End While
r.Close()
myconnect.Close()
Table2.Connection.Open()
Dim r2 As SqlDataReader
r2 = Table2.ExecuteReader(CommandBehavior.CloseConnection)
While r2.Read
array2.Add(r2(1).ToString())
array2.Add(r2(2).ToString())
array2.Add(r2(3).ToString())
array2.Add(r2(4).ToString())
End While
r2.Close()
myconnect.Close()
Dim comparestringa, comparestringb As String
Dim compare_string_counter As Int16 = 1
comparestringa = userintarray(0)
comparestringb = eventintarray(0)
For x = 0 To array1.Count - 1
If comparestringa(x) = "1" And comparestringa(x) = comparestringb(x) Then
Label4.Text = Label4.Text + " 1 "
Else
compare_string_counter = compare_string_counter + 1
End If
comparestringa = userintarray(x)
comparestringb = eventintarray(x)
Next
【问题讨论】: