Как проверить имя пользователя и пароль sqlite с помощью ввода пользователя в xamarin - PullRequest
0 голосов
/ 27 декабря 2018

У меня есть база данных sqlite, в которой хранятся имена пользователей и пароли всех зарегистрированных пользователей.Я сейчас пытаюсь создать страницу входа, но я не знаю, как проверить ввод пользователя с помощью базы данных sqlite.

Моя первая идея состояла в том, чтобы преобразовать имена пользователей и пароли, хранящиеся в sqlite, в строковые массивы, а затем перебирать их, пока не найдет то, что пользователь ввел на странице входа, но ни один из методов, которые я нашелонлайн закончил работать.Не уверен, что это даже правильный подход.

Это код в классе DataBaseManager, который должен выбирать все имена пользователей:

public List<User> GetUNames(){

        return dbConnection.Query<User>("return dbConnection.Query<User>("Select * FROM [User] WHERE uName = @username AND Pw = @password");

    }

И вот где я получилдо сих пор на странице входа в систему:

        DatabaseManager DBM = new DatabaseManager();

    private async void Handle_Clicked(object sender, System.EventArgs e)

    {
        for (int i = 0; i < DBM.GetUNames().Count; i++){


        }

        if (username.Text.ToLower()

    }

После того, как проверка имени пользователя начинает работать, я просто сделаю то же самое для паролей (пароли, хранящиеся в приложении прямо сейчас, не хэшируются, яЯ сделаю это позже)Спасибо!

Основываясь на ответе Джейсона, я изменил следующее:

Я добавил это в класс менеджера баз данных: `public bool ValidateUN (строкаusername) {

        var results = dbConnection.Table<User>().Where(v => v.uName == username).ToList();

        return (results.Count() > 0);
    }

    public bool ValidatePW(string password)
    {

        var results = dbConnection.Table<User>().Where(v => v.Pw == password).ToList();

        return (results.Count() > 0);
    }

А вот так выглядит класс входа в систему сейчас:

DatabaseManager DBM = new DatabaseManager();



    private async void Handle_Clicked(object sender, System.EventArgs e)

    {

        if (DBM.ValidateUN() == username.Text.ToLower() && DBM.ValidatePW == password.Text()) {

            await Navigation.PushModalAsync(new Home());

        } else if (DBM.ValidateUN() != username.Text.ToLower()){

            await DisplayAlert("Error", "Username or password is incorrect", "OK");

        } else if (DBM.ValidatePW != password.Text()){

            await DisplayAlert("Error", "Username or password is incorrect", "OK");

        }


    }

Но я получаю ошибки в этих областях в классе входа:

DBM.ValidateUN() он говорит: «Не задан аргумент, который соответствует необходимому формальному параметру« username »для« DatabaseManager.ValidateUN (string) »«

»А также для .Text из password.Text().он говорит, что «не вызываемый член Entry.Text» не может быть использован как метод.

1 Ответ

0 голосов
/ 27 декабря 2018
public bool ValidateUser(string user, string password)
{

    var results = dbConnection.Table<User>().Where(v => v.uName == user && v.Pw = password).ToList();

    return (results.Count() > 0);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...