Поиск в базе данных SQLite в формах Xamarin - PullRequest
0 голосов
/ 09 сентября 2018

У меня есть строка поиска со списком. В списке будут отображены все предложения из базы данных. Проблема моего поискового запроса не работает. Я получаю ноль. Я не уверен, что мой запрос имеет правильный синтаксис.

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;
        }
    }

1 Ответ

0 голосов
/ 09 сентября 2018

В вашем запросе он содержит "FileAS" и "FileAs" проблему чувствительности к регистру. Убедитесь, что они одинаковы и точно соответствуют имени столбца.

Измените ваш запрос на:

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

OR

Чтобы уменьшить орфографические ошибки, попробуйте следующее лямбда-выражение как запрос:

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;
    }
}

Надеюсь, это решит вашу проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...