#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();
}