Xamarin表单中的SQLite数据库搜索

Xamarin表单中的SQLite数据库搜索,sqlite,xamarin,xamarin.forms,Sqlite,Xamarin,Xamarin.forms,我有一个带有列表的搜索栏。该列表将显示数据库中的所有建议。我的搜索查询不起作用的问题。我得到零计数。我不确定我的查询是否有正确的语法 private void NameSearch_SearchButtonPressed(object sender, EventArgs e) { var keyword = NameSearch.Text; var db = DependencyService.Get<ISQLiteDB>();

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

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;
        }
    }
private void NameSearch\u search按钮按下(对象发送方,事件参数e)
{
var关键字=NameSearch.Text;
var db=DependencyService.Get();
var conn=db.GetConnection();
var getCaf=conn.querySync(“从tblContacts中选择FileAS,其中FileAS类似“%”?%”,关键字);
var resultCount=getCaf.Result.Count;
如果(结果计数>0)
{
var result=getCaf.result;
lstName.ItemsSource=结果;
}
}

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

将查询更改为:

conn.QueryAsync<ContactsTable>($"SELECT FileAS FROM  tblContacts WHERE FileAS LIKE '%{ keyword }%'").ToList();
conn.querySync($“从tblContacts中选择FileAS,其中FileAS类似“{keyword}%”)。ToList();

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

conn.Table<ContactsTable>().Where(x => x.FileAS.Contains(keyword)).ToList();
conn.Table().Where(x=>x.FileAS.Contains(关键字)).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;
    }
}
private void NameSearch\u search按钮按下(对象发送方,事件参数e)
{
var关键字=NameSearch.Text;
var db=DependencyService.Get();
var conn=db.GetConnection();
var getCaf=conn.Table()。其中(x=>x.FileAS.Contains(关键字)).ToList();
var resultCount=getCaf.Count();
如果(结果计数>0)
{
lstName.ItemsSource=getCaf;
}
}

希望这能解决您的问题。

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

将查询更改为:

conn.QueryAsync<ContactsTable>($"SELECT FileAS FROM  tblContacts WHERE FileAS LIKE '%{ keyword }%'").ToList();
conn.querySync($“从tblContacts中选择FileAS,其中FileAS类似“{keyword}%”)。ToList();

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

conn.Table<ContactsTable>().Where(x => x.FileAS.Contains(keyword)).ToList();
conn.Table().Where(x=>x.FileAS.Contains(关键字)).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;
    }
}
private void NameSearch\u search按钮按下(对象发送方,事件参数e)
{
var关键字=NameSearch.Text;
var db=DependencyService.Get();
var conn=db.GetConnection();
var getCaf=conn.Table()。其中(x=>x.FileAS.Contains(关键字)).ToList();
var resultCount=getCaf.Count();
如果(结果计数>0)
{
lstName.ItemsSource=getCaf;
}
}

希望这能解决您的问题。

谢谢,我一发布就看到了文件,哈哈。你的代码很有用谢谢谢谢你我一发布就看到了文件哈哈。您的代码工作正常谢谢您是否在.net标准或pcl中工作?您是否在.net标准或pcl中工作?