Как запросить информацию о пользователе на основе его имени в Xamarin - PullRequest
0 голосов
/ 03 февраля 2020

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

Я использую событие textchange, чтобы проверить, существует имя пользователя или нет , Это мой код:


        private void EntryLoginUsername_TextChanged(object sender, TextChangedEventArgs e)
        {
            var dbpath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "Userdatabase.db");
            var db = new SQLiteConnection(dbpath);
            RegUserTable _userstable = new RegUserTable();

            if (!string.IsNullOrWhiteSpace(EntryLoginUsername.Text))
            {
                if (IsTableExists("RegUserTable") == true)
                {
                    var checkquery = db.Table<RegUserTable>().Where(a => a.Username == EntryLoginUsername.Text).FirstOrDefault();

                    if (checkquery != null)
                    {
                        // ani i insert ang tts function  
                        var gendercheck = db.Query<RegUserTable>("SELECT Gender FROM RegUserTable WHERE Username = ?", EntryLoginUsername.Text);

                        if (gendercheck != null)
                        {
                            GenderIdentifier.Text = gendercheck.ToString(); ;
                        }

                        else
                        {
                            GenderIdentifier.Text = "nooooo";
                        }
                    }

                    else
                    {
                        GenderIdentifier.Text = "nooo";
                    }
                }
            }

            else
            {
                GenderIdentifier.Text = "no";
            }
        }

Когда я запускаю свое приложение, оно не выдает ошибку, но это вывод, если имя пользователя существует в моей базе данных:

enter image description here

Выходные данные должны быть "Мужской" или "Женский".

Ответы [ 2 ]

2 голосов
/ 03 февраля 2020

Судя по вашему фрагменту кода, в вашем RegUserTable есть поле Gender. Следовательно, не требуется запрашивать дважды, чтобы получить пользователя, и снова для пола.

Примечание: Вы получите всю информацию о пользователе, если он доступен в вашей таблице в первом запросе. Таким образом, вы можете напрямую получить доступ к полу пользователя из этого объекта.

Проверьте ниже код. Это будет работать для вас

 var checkquery = db.Table<RegUserTable>().Where(a => a.Username == EntryLoginUsername.Text).FirstOrDefault();
 if(checkquery !=null)
 {
   var userGender= checkquery.Gender;
   GenderIdentifier.Text = userGender;
 }
0 голосов
/ 03 февраля 2020

gendercheck является List<RegUserTable>

var gendercheck = db.Query<RegUserTable>("SELECT Gender FROM RegUserTable WHERE Username = ?", EntryLoginUsername.Text);

Попробуйте это

GenderIdentifier.Text = gendercheck.FirstOrDefault().Gender.ToString();
...