2013-05-07 3 views
2

IndexOutOfRange Исключения при обращении двух столбцов из базы данных

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) и пароль (ПАРОЛЬ) я получаю эту ошибку. Если я сравниваю только имя пользователя с записями db, он работает как шарм.

Это только дает ошибку при использовании фактических данных. E.I. Если я введу [admin], [admin] на веб-странице журнала, он даст мне ошибку, если я введу [asd], [asd], тогда метка изменится на НЕТ.

Идея кода - это страница входа в систему. Надеюсь, мои объяснения достаточно хороши.

+1

Пожалуйста, добавьте действительный код на ваш вопрос * в виде текста *. –

ответ

4

Вы выбираете только имя пользователя из своей таблицы. Вы не выбираете пароль, поэтому он генерирует исключение, когда вы пытаетесь извлечь его из набора результатов.

Изменить запрос к этому:

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

+1 для чтения «мелкой печати» на скриншоте. –

1

Вы также можете использовать * вместо имен столбцов в запросе. Вот его маленький сценарий. Если есть несколько столбцов, вам просто нужно использовать * для этого. Это упростит ваш запрос.

Смежные вопросы