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
答案 0 :(得分:0)
当您尝试从阅读器中读取查询的SELECT字段列表中不存在的字段时,会生成错误。因此,如果您想阅读EmpPassword值,则需要将查询更改为
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
.......
但是,您已经知道密码和电子邮件值,因为您需要设置where子句所需的参数,这样您就可以避免从阅读器中读取它们并将字段添加到选择列表中。
答案 1 :(得分:0)
Select语句应包含您要检索的所有字段 -
SELECT emp_id, [E_mail], EmpPassword
FROM personaldetails
WHERE [E_mail] = @E_mail
AND EmpPassword = @EmpPassword
- 或 -
由于您已经知道 e_mail 和 EmpPassword ,因此您只能选择 emp_id ,并指定 e_mail 和<来自原始值的 EmpPassword -
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