sqlite - 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;
}
}
解决方案
在您的查询中,它包含“ 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;
}
}
希望这能解决您的问题。
推荐阅读
- sql - Oracle SQL 中的累积使用 case 语句
- reactjs - 我在使用 react 制作小应用程序时遇到此错误有人可以帮我吗
- reactjs - 类中的这些方法有什么区别
- terraform - 没有循环时,terraform destroy 会产生循环错误
- reactjs - 如何在反应应用程序中使用 axios 从快速服务器获取有关错误的响应
- php - 如何在这个特定的 Wordpress 代码片段中显示发布日期而不是最后修改日期
- machine-learning - 我们什么时候应该使用主成分分析?
- swift - 在 Swift 的 ViewController 中禁用 IQKeyboardManager
- spring-boot - 为什么按钮中的href不会重定向到链接?
- sql - SQL Server - 获取数据类型列表,最大长度,如果它是一个标识,如果它是一个没有 object_ID 函数的主键