Ошибка формы входа - PullRequest
       2

Ошибка формы входа

0 голосов
/ 09 мая 2011

Я создаю форму входа. Где, если Login-id и пароль совпадают со значениями, хранящимися в таблице Register, он извлекает все значения из таблицы Register и хранилищ результатов в объекте SqlDataReader. Итак, теперь я хочу получить доступ к accountid и введите из этой таблицы. это?

Чтобы понять, что я пытаюсь сказать, взгляните на следующий код:

-------------------- Login.aspx.cs ---------------------- -----------------------------------------

protected void Submit_Click(object sender, EventArgs e)
{
string conStr = ConfigurationManager.ConnectionStrings["ROCConStr"].ConnectionString;
SqlConnection scon = new SqlConnection(conStr);
scon.Open();
SqlCommand cmd = new SqlCommand("select* from Register where email= @login_id and pwd=@password", scon);
SqlParameter Para;
Para = cmd.Parameters.Add("@login_id", SqlDbType.Char);
Para.Value = email.Text;
Para = cmd.Parameters.Add("@password", SqlDbType.Char);
Para.Value = pwd.Text;
SqlDataReader reader = cmd.ExecuteReader();
if(reader.HasRows)
{if (reader["account_type"]=="admin") /* error - Please see the bottom for more details.*/
Response.Redirect("http://localhost:1187/roc/WelcomeAdmin.aspx");
else
Response.Redirect("http://localhost:1187/roc/WelcomeUser.aspx");}
else
{ Label1.Text = "UserID or password is incorrect."; }
reader.Close();
scon.Close();
}

==================================================

<br>About the erro:- reader["account_type"]=="admin"

Я не знаю, как получить значение одного столбца. Итак, я просто набрал, чтобы показать, что я хочу сделать. Я проверил этот код, я получил ошибку - «Недопустимая попытка чтения при отсутствии данных».

Ответы [ 2 ]

2 голосов
/ 09 мая 2011

Вам нужно позвонить reader.Read(), чтобы перейти к первому ряду.

Либо измените запрос, чтобы выбрать только нужный вам столбец, затем вызовите ExecuteScalar, чтобы вернуть это значение напрямую (или null, если строк не было), не используя DataReader вообще.
(вы не можете сделать это, так как вам нужно более одного столбца)

1 голос
/ 10 мая 2011

Вы только проверили, есть ли у вас «HasRows»; но вам все еще нужно продвигать читателя. reader.Read()

Это должно решить твою проблему. Вы можете также рассмотреть возможность включения операторов using для ограничения области действия ваших объектов и изменения ваших URL-адресов для использования относительных путей вместо абсолютных. Таким образом, если вы развертываете в новой среде или перемещаете серверы, вам не нужно удалять жестко закодированный URL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...