首页 > 解决方案 > Xamarin 表单中的 SQLite 数据库搜索

问题描述

我有一个带有列表的搜索栏。该列表将显示数据库中的所有建议。我的搜索查询不起作用的问题。我的计数为零。我不确定我的查询是否有正确的语法。

private void NameSearch_SearchButtonPressed(object sender, EventArgs e)
    {
        var keyword = NameSearch.Text;

        var db = DependencyService.Get<ISQLiteDB>();
        var conn = db.GetConnection();

        var getCaf = conn.QueryAsync<ContactsTable>("SELECT FileAS FROM tblContacts WHERE FileAs LIKE '%?%'", keyword);
        var resultCount = getCaf.Result.Count;

        if (resultCount > 0)
        {
            var result = getCaf.Result;
            lstName.ItemsSource = result;
        }
    }

标签: sqlitexamarinxamarin.forms

解决方案


在您的查询中,它包含“ FileAS”和“ FileAs”区分大小写问题。确保它们都相同并且与列名完全相同。

将您的查询更改为:

conn.QueryAsync<ContactsTable>($"SELECT FileAS FROM  tblContacts WHERE FileAS LIKE '%{ keyword }%'").ToList();

或者

为了减少拼写错误,您可以尝试以下 Lambda 表达式作为查询:

conn.Table<ContactsTable>().Where(x => x.FileAS.Contains(keyword)).ToList();

因此,您的最终代码应如下所示:

private void NameSearch_SearchButtonPressed(object sender, EventArgs e)
{
    var keyword = NameSearch.Text;

    var db = DependencyService.Get<ISQLiteDB>();
    var conn = db.GetConnection();

    var getCaf = conn.Table<ContactsTable>().Where(x => x.FileAS.Contains(keyword)).ToList();
    var resultCount = getCaf.Count();

    if (resultCount > 0)
    {
        lstName.ItemsSource = getCaf;
    }
}

希望这能解决您的问题。


推荐阅读