首页 > 解决方案 > Sqlite Like 查询 xamarin 表单

问题描述

我正在尝试在 xamarin 中点赞,但是查询返回给我的只是一个数字,我已经在 DBowser sqlite 中对其进行了测试,并且可以正常工作,但在这里不行。会出现什么错误?

询问

public Task<Produtos> GetProdutosAsyncBy(String searchField)
{
    string searchNoSpaces = searchField.Replace(" ", "%");
    var get_docnumb = database.ExecuteScalarAsync<Produtos>("SELECT *" +
                      " FROM Produtos WHERE Design LIKE '%" + searchNoSpaces + "%'");

    return get_docnumb;   
}

来电查询

public async void SearchProdutoQuery ()
{
    var qwe = App.Database.GetProdutosAsyncBy(searchBar_produtos.Text).Result;
}

标签: c#sqlitexamarinxamarin.forms

解决方案


You can use Scalar to return something as below:

public int GetCountProdutosAsyncBy(String searchField)
{

    string searchNoSpaces = searchField.Replace(" ", "%");
    var get_docnumb = database.ExecuteScalarAsync<Produtos>("SELECT COUNT(*) FROM Produtos WHERE Design LIKE '%" + searchNoSpaces + "%'");

    return get_docnumb;

}

But to solve your problem you can't use Scalar, you need to QUERY and to avoid SQL injection you should use parameter:

public Task<Produtos> GetProdutosAsyncBy(String searchField)
{

    string searchNoSpaces = searchField.Replace(" ", "%");
    var get_docnumb = database.Query<Produtos>("SELECT * FROM Produtos WHERE Design LIKE ?", "%" + searchNoSpaces + "%");

    return get_docnumb;

}

推荐阅读