我收到以下错误:
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
有人可以指出哪里/为什么会出错?
答案 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")