Задать вопрос
@bockpecehn

Как правильно реализовать поиск в таблице sqlite и отображение в dataGridView?

Есть код
private void btnSearch_Click_1(object sender, EventArgs e)
{
    string searchValue = txtSearch.Text.Trim();
    if (string.IsNullOrEmpty(searchValue))
    {
        MessageBox.Show("Введите текст для поиска");
        return;
    }

    SearchPlants(searchValue);
    dataGridView1.Columns[1].HeaderText = "Растение";
    dataGridView1.Columns[2].HeaderText = "Описание";
    dataGridView1.Columns[3].HeaderText = "Род";
    dataGridView1.Columns[4].HeaderText = "Семейство";
    dataGridView1.Columns[5].HeaderText = "Вид";
    dataGridView1.Columns[6].HeaderText = "Территория";
}
private void SearchPlants(string searchValue)
{
    string searchColumn = "NamePlants";

    if (label2.Text == "по растениям")
    {
        searchColumn = "NamePlants";
    }
    else if (label2.Text == "по семействам")
    {
        searchColumn = "FamId";
    }
    else if (label2.Text == "по видам")
    {
        searchColumn = "AppId";
    }
    else if (label2.Text == "по родам")
    {
        searchColumn = "IdGen";
    }
    else if (label2.Text == "по территориям")
    {
        searchColumn = "TerrId";
    }

    SQLiteCommand selectCommand = new SQLiteCommand($"SELECT Id, NamePlants, Description, IdGen, FamId, AppId, TerrId, ImageId FROM Plants WHERE LOWER({searchColumn}) LIKE '%' || LOWER(@searchValue) || '%'", DB);
    selectCommand.Parameters.AddWithValue("@searchValue", searchValue.ToLower());
    SQLiteDataAdapter adapter = new SQLiteDataAdapter(selectCommand);
    DataTable table = new DataTable();
    adapter.Fill(table);
    dataGridView1.DataSource = table;
}

Но там выводит не все нужные результаты и как я понимаю LOWER не работает к значениям в столбце
  • Вопрос задан
  • 175 просмотров
Подписаться 1 Средний 6 комментариев
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы