索引超出了VB.net中数组的范围

时间:2013-12-24 07:22:16

标签: vb.net

我得到这个错误,打印出if语句

  

索引超出了数组的范围

代码:

Private Sub radsingle_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles radsingle.CheckedChanged

        With comDB
            .CommandText = SQL
            rdDB = .ExecuteReader
        End With
        While rdDB.Read

            If rdDB(1).ToString = txtptp.SelectedItem.ToString Then
                txtcdays.Text = rdDB(2).ToString.Trim

                'Radmulti.Checked = False
            End If
        End While

        rdDB.Close()

    End Sub

我在这段代码中有什么要改变的吗??

2 个答案:

答案 0 :(得分:1)

使用DataReader的正确方法将是以下几点:

If DataReader.HasRows Then
    While DataReader.Read()
    If rdDB.Item("ColumnName1").ToString = txtptp.SelectedItem.ToString Then
        ...
    End If
    End While
End If

通过这种方式,您可以检查DataReader是否包含行,还可以避免对索引产生混淆。

当然,根据您发布的代码,不清楚SQL变量的含义。可能,您的查询没有返回任何行。

答案 1 :(得分:0)

尝试使用列名而不是列索引