SQLite нет такой ошибки таблицы, когда таблица существует в xamarin - PullRequest
0 голосов
/ 08 февраля 2020

Вот как я определяю свою таблицу как то, что эта ссылка: SQLite нет такой ошибки таблицы, когда таблица существует сказал

[Table("RegUserTable")]
[Serializable]
[DataContract]
public class RegUserTable
{
    [PrimaryKey]
    [DataMember]
    public Guid UserId { get; set; }

    [DataMember]
    public string Username { get; set; }

    [DataMember]
    public string Password { get; set; }

    [DataMember]
    public string Email { get; set; }

    [DataMember]
    public string Gender { get; set; }
}

Это мой код входа в систему:

public void Button_Clicked_1(object sender, EventArgs e)//LOGIN!
{
    var dbpath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "Userdatabase.db");
    var db = new SQLiteConnection(dbpath);
    var loginquery = db.Table<RegUserTable>().Where(u => u.Username.Equals(EntryLoginUsername.Text) && u.Password.Equals(EntryLoginPassword.Text)).FirstOrDefault();

    if (string.IsNullOrWhiteSpace(EntryLoginUsername.Text) && string.IsNullOrWhiteSpace(EntryLoginPassword.Text))
    {
        DisplayAlert("Blank Fields", "Please Input Your Username and Password!", "OK");
    }
    else if (loginquery != null)
    {
        App.Current.MainPage = new NavigationPage(new MainPage(EntryLoginUsername.Text, GenderIdentifier.Text));
    }
}

Если я запускаю это в моем эмуляторе, он работает на 100%, но когда я запускаю его на своем устройстве, он выдает эту ошибку: enter image description here

Что я делаю здесь неправильно ?

1 Ответ

0 голосов
/ 08 февраля 2020

Создание таблицы, как показано ниже, решает проблему

public async void Button_Clicked_1(object sender, EventArgs e)//LOGIN!
{
    var dbpath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "Userdatabase.db");
    var db = new SQLiteConnection(dbpath);

    var connection = new SQLiteAsyncConnection(dbpath); 
    await connection.CreateTableAsync<RegUserTable>();

    var loginquery = db.Table<RegUserTable>().Where(u => u.Username.Equals(EntryLoginUsername.Text) && u.Password.Equals(EntryLoginPassword.Text)).FirstOrDefault();

    if (string.IsNullOrWhiteSpace(EntryLoginUsername.Text) && string.IsNullOrWhiteSpace(EntryLoginPassword.Text))
    {
        DisplayAlert("Blank Fields", "Please Input Your Username and Password!", "OK");
    }
    else if (loginquery != null)
    {
        App.Current.MainPage = new NavigationPage(new MainPage(EntryLoginUsername.Text, GenderIdentifier.Text));
    }
}
...