Asp.net 为什么我得到System.IndexOutOfRangeException:EmpPassword
当您尝试从读卡器读取查询的“选择字段”列表中不存在的字段时,会生成此错误。因此,如果您想读取EmpPassword值,您需要将查询更改为Asp.net 为什么我得到System.IndexOutOfRangeException:EmpPassword,asp.net,Asp.net,当您尝试从读卡器读取查询的“选择字段”列表中不存在的字段时,会生成此错误。因此,如果您想读取EmpPassword值,您需要将查询更改为 myreader = obj.ExecuteReader If myreader.Read Then Session.Item("emp_id") = myreader("emp_id") Session.Item("Email") = myreader("e_mail") Session.Item("password") =
myreader = obj.ExecuteReader
If myreader.Read Then
Session.Item("emp_id") = myreader("emp_id")
Session.Item("Email") = myreader("e_mail")
Session.Item("password") = myreader("EmpPassword")
ElseIf TextBox1.Text = "123456" Then
Response.Redirect("home.aspx")
Else
Response.Redirect("personal.aspx")
End If
但是,您已经知道密码和电子邮件值,因为您需要设置where子句所需的参数,因此可以避免从读卡器读取这些参数,并将字段添加到select列表中。select语句应包括要检索的所有字段-
Dim query = "SELECT emp_id, E_mail, EmpPassword from personaldetails " & _
"where [E_mail] =@E_mail and EmpPassword =@EmpPassword"
Dim obj = new SqlCommand(query, connection)
.... add the parameters....
myreader = obj.ExecuteReader
.......
-或-
由于您已经知道电子邮件和emp密码,因此您可以仅选择emp id,并从原始值中分配电子邮件和emp密码-
SELECT emp_id, [E_mail], EmpPassword
FROM personaldetails
WHERE [E_mail] = @E_mail
AND EmpPassword = @EmpPassword
显示用于提取此数据的SELECT语句。此语句从personaldetails中选择[E\u mail],其中[E\u mail]=@E\u mail和EmpPassword=@EmpPassword如果未在SELECT之间列出EmpPassword字段,则无法从读取器中读回。此外,emp_id似乎丢失,同样的错误欢迎访问SO。我很高兴你解决了这个问题。如果这回答了您的问题,请将其标记为答案。它将帮助其他寻找相同答案的人。
select [emp_id] from personaldetails
where [E_mail] =@E_mail and EmpPassword =@EmpPassword
Session.Item("emp_id") = myreader("emp_id")
Session.Item("Email") = e_mail
Session.Item("password") = EmpPassword