【问题标题】:SQLite no such table error when table exists in xamarin当xamarin中存在表时,SQLite没有这样的表错误
【发布时间】:2020-05-24 07:46:21
【问题描述】:

这就是我如何将我的表定义为这个链接:SQLite no such table error when table exists 所说的

[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% 工作,但是当我在我的设备上运行它时,它会抛出这个错误:

我在这里做错了什么?

【问题讨论】:

  • 对于初学者来说,删除 DataMember 和 Contract,这不是必需的,其次,如果您有多个,请确保您连接到正确的数据库。第三向我们展示您将此表添加到数据库的代码!
  • 谢谢你说我刚刚添加的“第三个” 这个 var connection = new SQLiteAsyncConnection(dbpath); { connection.CreateTableAsync();现在它可以工作了:D 我没有在开头添加它,因为我的代码(上面)在模拟器中运行良好。
  • 添加了一个答案,请为其他正在寻找相同答案的人标记它!

标签: xamarin xamarin.forms sqlite-net-pcl


【解决方案1】:

创建类似下面的表格可以解决问题

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

【讨论】:

    猜你喜欢
    • 2019-12-06
    • 2015-05-11
    • 2010-12-29
    • 2016-11-18
    • 1970-01-01
    • 1970-01-01
    • 2021-10-20
    • 2017-06-24
    相关资源
    最近更新 更多