2013-05-07 54 views
2

IndexOutOfRange異常而從Access數據庫

while (reader.Read()) 
{ 
    if (TextBox1.Text.CompareTo(reader["usernam"].ToString()) == 0&&TextBox2.Text.CompareTo(reader["passwd"].ToString()) == 0) // A little messy but does the job to compare your infos assuming your using a textbox for username and password 
    { 
     Label3.Text = "Redirecting"; 



     Response.Cookies["dbname"]["Name"] = reader["usernam"].ToString(); 
     Response.Cookies["dbname"].Expires = DateTime.Now.AddSeconds(10); 
     Response.Redirect("index2.aspx"); 

    } 
    else 
    { Label3.Text = "NO"; } 

} 

訪問兩列當我嘗試比較兩者的用戶名(usernam)和密碼(passwd中)我得到這個錯誤。 如果我只比較用戶名和數據庫條目,它就像一個魅力。

它只會給錯誤時使用的實際數據。 E.I.如果我在登錄網頁輸入[admin],[admin],它會給我錯誤,如果我輸入[asd],[asd]那麼標籤會變成NO。

代碼背後的想法是登錄頁面。 我希望我的解釋夠好。

+1

請將您的問題*的實際代碼添加爲文本*。 – 2013-05-07 10:56:53

回答

4

您只是從表中選擇用戶名。您沒有選擇密碼,因此當您嘗試從結果集中檢索密碼時會引發異常。

更改查詢到這一點:

string selectString = "SELECT usernam, passwd FROM Table1"; 
+1

+1用於閱讀屏幕截圖中的「細紋」。 – 2013-05-07 11:23:35

1

您還可以在查詢中使用*代替列名。這裏只是一個小場景。如果有多個列,那麼你只需要使用*。這將使您的查詢變得簡單。