как вызвать функцию проверки при сохранении данных в базе данных?

#c# #.net

#c# #.net

Вопрос:

Я хочу использовать надежный пароль в своей программе. Итак, я искал надежную проверку пароля, но я не понял, как вызвать эту функцию при сохранении.

Это функция, которую я хочу использовать для проверки пароля:

 private bool ValidatePassword(string password, out string ErrorMessage)
{
    var input = password; 
     ErrorMessage = string.Empty;

    if (string.IsNullOrWhiteSpace(input))
    {
        throw new Exception("Password should not be empty");
    }

    var hasNumber = new Regex(@"[0-9] ");
    var hasUpperChar = new Regex(@"[A-Z] ");
    var hasMiniMaxChars = new Regex(@".{8,15}");
    var hasLowerChar = new Regex(@"[a-z] ");
    var hasSymbols = new Regex(@"[!@#$%^amp;*()_ =[{]};:<>|./?,-]");

    if (!hasLowerChar.IsMatch(input))
    {
        ErrorMessage = "Password should contain At least one lower case letter";
        return false;
    }
    else if (!hasUpperChar.IsMatch(input))
    {
        ErrorMessage = "Password should contain At least one upper case letter";
        return false;
    }
    else if (!hasMiniMaxChars.IsMatch(input))
    {
        ErrorMessage = "Password should not be less than or greater than 12 characters";
        return false;
    }
    else if (!hasNumber.IsMatch(input))
    {
        ErrorMessage = "Password should contain At least one numeric value";
        return false;
    }

    else if (!hasSymbols.IsMatch(input))
    {
        ErrorMessage = "Password should contain At least one special case characters";
        return false;
    }
    else
    {
        return true;
    }
}
  

Код кнопки сохранения:

 private void btnSave_Click(object sender, EventArgs e) {
    var data = DBConnection.DBConnect();
    SqlCommand cmd = new SqlCommand("Insert_Users", data);
    cmd.CommandType = CommandType.StoredProcedure;
    cmd.Parameters.Add("@StaffName", SqlDbType.VarChar).Value = txtStaffName.Text;
    cmd.Parameters.Add("@Email", SqlDbType.NVarChar).Value = txtEmail.Text;
    cmd.Parameters.Add("@UserName", SqlDbType.NVarChar).Value = txtUsername.Text;
    cmd.Parameters.Add("@Password", SqlDbType.VarChar).Value = txtPassword.Text;
    cmd.Parameters.Add("@Phoneno", SqlDbType.NVarChar).Value = txtPhoneNo.Text;
    cmd.Parameters.Add("@Admin", SqlDbType.Char).Value = chkIsAdmin.CheckState == CheckState.Checked ? 1 : 0;
    SqlDataAdapter adapter = new SqlDataAdapter(cmd);
    DataSet ds = new DataSet();
    adapter.Fill(ds);
    MessageBox.Show("Saved Sucessfully");
    LoadUsers();
}
  

Может кто-нибудь подсказать мне, как я могу использовать эту функцию для проверки пароля, пожалуйста?

Комментарии:

1. Я не вижу ни одного столбца пароля, который вы вставляете при выполнении процедуры сохранения. Когда именно вы хотите?

2. ops я пропустил размещенный код кнопки, извините

Ответ №1:

Может быть, я не понимаю проблему, но это так просто?:

 private void btnSave_Click(object sender, EventArgs e) {
    var error = string.Empty;    
    if(ValidatePassword(txtPassword.Text, error))
    {
        var data = DBConnection.DBConnect();
        SqlCommand cmd = new SqlCommand("Insert_Users", data);
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.Parameters.Add("@StaffName", SqlDbType.VarChar).Value = txtStaffName.Text;
        cmd.Parameters.Add("@Email", SqlDbType.NVarChar).Value = txtEmail.Text;
        cmd.Parameters.Add("@UserName", SqlDbType.NVarChar).Value = txtUsername.Text;
        cmd.Parameters.Add("@Password", SqlDbType.VarChar).Value = txtPassword.Text;
        cmd.Parameters.Add("@Phoneno", SqlDbType.NVarChar).Value = txtPhoneNo.Text;
        cmd.Parameters.Add("@Admin", SqlDbType.Char).Value = chkIsAdmin.CheckState == CheckState.Checked ? 1 : 0;
        SqlDataAdapter adapter = new SqlDataAdapter(cmd);
        DataSet ds = new DataSet();
        adapter.Fill(ds);
        MessageBox.Show("Saved Sucessfully");
        LoadUsers();
    }
    else
    {
        throw new Exception(error); // Or Console.WriteLine(error) or whatever
    }
}
  

Комментарии:

1. nth неверно, я просто не знал, как вызвать функцию спасибо за вашу помощь

2. Хорошо, это было легко: D Не могли бы вы проверить этот ответ как правильный, если это решение вашей проблемы?