2014-12-18 140 views
-2
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 
+2

顯示用於提取此數據的SELECT語句。 – Steve

+0

這個聲明(從[E_mail] = @ E_mail和EmpPassword = @ EmpPassword的personaldetails中選擇[E_mail]) –

+0

如果您沒有在SELECT之間列出您的EmpPassword字段,則無法從閱讀器讀取它。此外emp_id似乎缺少,同樣的錯誤 – Steve

回答

0

當您嘗試從讀取器中讀取未出現在查詢的SELECT字段列表中的字段時,會生成錯誤。所以,如果你想讀EmpPassword值,你需要查詢更改爲

Dim query = "SELECT emp_id, E_mail, EmpPassword from personaldetails " & _ 
      "where [E_mail] [email protected]_mail and EmpPassword [email protected]" 
Dim obj = new SqlCommand(query, connection) 
.... add the parameters.... 
myreader = obj.ExecuteReader 
....... 

但是,你已經知道的密碼和電子郵件的價值,因爲你需要設置由where子句所需要的參數,所以你可以避免從閱讀器讀取它們並將這些字段添加到選擇列表中。

0

Select語句應該包括要檢索所有領域 -

SELECT emp_id, [E_mail], EmpPassword 
FROM personaldetails 
WHERE [E_mail] = @E_mail 
     AND EmpPassword = @EmpPassword 

- 或 -

既然你已經知道的e_mailEmpPassword,您可以選擇emp_id爲僅分配e_mailEmpPassword原始值值 -

select [emp_id] from personaldetails 
where [E_mail] [email protected]_mail and EmpPassword [email protected] 

Session.Item("emp_id") = myreader("emp_id") 
Session.Item("Email") = e_mail 
Session.Item("password") = EmpPassword 
+0

謝謝我的問題解決 –

+0

歡迎來到SO。我很高興你解決了這個問題。如果這回答了您的問題,請將其標記爲答案。它會幫助其他人尋找相同的答案。 – Win