【发布时间】:2018-08-16 12:34:19
【问题描述】:
我正在尝试在 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;
}
【问题讨论】:
-
这就是执行标量的作用——它返回一个值,即第一个结果集第一行的第一列。
-
因为您使用的是 ExecuteScalar。很好,你有这个错误,因为你的代码容易受到 SQL 注入攻击。代替字符串连接使用参数。
-
@CetinBasoz 是的,我知道,这是一个测试,但错误是因为我没有使用参数?
-
不,已经说过这是因为您使用 ExecuteScalar 要求单个值。尝试改用 ExecuteDbDataReader 或 ExecuteReader。恕我直言,使用 Linq 会更容易。
-
@CetinBasoz 但 SQLiteAsyc 不包含 ExecuteReader 或 ExecuteDbDataReader
标签: c# sqlite xamarin xamarin.forms