Я просто хочу знать, как показать забытый пароль, используя другие данные из базы данных MSAccess

#c# #ms-access-2013

#c# #ms-access-2013

Вопрос:

 private void RevealForgetPass_Click(object sender, EventArgs e)
        {

            string connectString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:/Users/rallf/Documents/dctcaccount.mdb";
            OleDbConnection cn = new OleDbConnection(connectString);
            cn.Open();
            string selectString = "select * from tbl_account where [Username]=@user and [Secret_Question]=@sq and [Secret_Answer]=@sa and [Pin]=@pin";
            OleDbCommand cmd = new OleDbCommand(selectString, cn);
            cmd.Parameters.Add(new OleDbParameter("@user", txtbox_username.Text.ToLower()));
            cmd.Parameters.Add(new OleDbParameter("@sq", cmbox_secquestion.Text));
            cmd.Parameters.Add(new OleDbParameter("@sa", txtbox_secretans.Text));
            cmd.Parameters.Add(new OleDbParameter("@pin", txtbox_pin.Text));
            cmd.CommandText = selectString;
            OleDbDataReader reader = cmd.ExecuteReader();



             int count = 0;
             while (reader.Read())
             {
                 count = count   1;



             }
             if (count == 1)
             {

                 panel2.Visible = true;
                 lbl_username.Text = reader["Username"].ToString(); 
  

Вот где ошибка при запуске программы.(на панели будет показано приветствие пользователя, а затем показ его / ее забытого пароля.)

 lbl_password.Text = reader["Password"].ToString();
             }
             else
             {
                 MessageBox.Show("Invalid Account!");
                 cn.Close();
             }
             }
  

ошибка гласит следующее:

Необработанное исключение типа ‘System.Исключение InvalidOperationException’ произошло в System.Data.dll Дополнительная информация: Для строки / столбца данных не существует.

Я пробовал разные способы включения reader.GetString(reader.GetOrdinal(" ")) Они также не работают.

Ответ №1:

Не храните пароли! Просто сохраните их хэш!

Затем позвольте пользователю создать новый пароль, если это необходимо.

Чтобы устранить вашу ошибку: вы должны извлечь данные внутри цикла while (reader.Read()) .После цикла слишком поздно, потому что вы достигли конца OleDbDataReader и не можете вернуться назад (только вперед).

 int count = 0;
while (reader.Read())
    {
         count = count   1;
         string username = reader.item["Username"].ToString();
         string password = reader.item["Password"].ToString();
    }