0

我收到以下错误:

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

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

4

3 回答 3

1

Check your ordinals. You might be giving an index which does not exist.

Index starts from 0. Instead of 11,12 you might want to try with 10, 11 for GetValue

于 2013-07-29T09:57:16.737 回答
1

我怀疑问题出在:

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

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

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

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

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

于 2013-07-29T09:59:18.573 回答
1

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

dr.GetValue(11)

dr.GetValue(12)

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

 select Username,password

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

于 2013-07-29T09:59:27.267 回答