index在asp.net中使用vb超出了数组的范围

时间:2013-07-29 09:55:00

标签: asp.net vb.net

我收到以下错误:

index was outside the bounds of the array

使用此代码时:

con.Open()
            qur = "select Username,password from registration where Username='" + TextBox1.Text + "'"
            cmd = New SqlCommand(qur, con)
            dr = cmd.ExecuteReader()
            If dr.HasRows() Then
                dr.Read()
                Session("us1") = dr.GetValue(11).ToString()
                Session("ps1") = dr.GetValue(12).ToString()
                If Session("us1") = TextBox1.Text And Session("ps1") = TextBox2.Text Then
                    Response.Redirect("APP.aspx")
                End If
            End If
        End Sub

有人可以指出哪里/为什么会出错?

3 个答案:

答案 0 :(得分:1)

检查你的序数。您可能会给出一个不存在的索引。

索引从0开始而不是11,12你可能想尝试使用10,11来获取GetValue

答案 1 :(得分:1)

我怀疑问题在于:

Session("us1") = dr.GetValue(11).ToString()
Session("ps1") = dr.GetValue(12).ToString()

但是,不要使用序数使用列名:

Session("us1") = dr("column1").ToString()
Session("ps1") = dr("column2").ToString()

订购可以轻易改变炸毁你的顺序。通过使用列名,您不依赖于订单,因此您不会收到索引错误。

如果该列不存在,您将收到另一种错误。

答案 2 :(得分:1)

您正在尝试获取不存在的字段的值:

dr.GetValue(11)

dr.GetValue(12)

请注意,您的查询仅选择两列(用户名和密码)

 select Username,password

使用GetValue(0)GetValue(1)或使用列名dr("Username")dr("password")