Загрузка...

Database search

Thread in C# created by Minin_inactive4471240 Mar 12, 2022. 210 views

  1. Minin_inactive4471240
    Minin_inactive4471240 Topic starter Mar 12, 2022 3 Sep 5, 2021
    У меня есть параметры, внесённые в переменные, каждый из них может быть пустым вплоть до того, что лишь одна переменная будет заполнена параметром. Как можно реализовать поиск по базе данных только не пустыми переменными, а пустые пропускать?
    Поиск по бд я реализую сам, а вот как сделать так, чтобы пустые переменные не использовались в нём, я не знаю. Не писать же к каждому условию ещё по 11 условий
    [IMG]
     
  2. vtlstolyarov
    SQL
    WHERE
    (@SertificatNomer IS NULL OR SertificatNomer = @SertificatNomer)
    AND
    (@DateOfRelease IS NULL OR DateOfRelease = @DateOfRelease)
    ...
     
    1. View previous comments (5)
    2. Minin_inactive4471240 Topic starter
      vtlstolyarov, просто у меня была мысль их разбить, и для каждого создать List, соответственно, записывать в него данные из ридера
    3. vtlstolyarov
      Minin_inactive4471240, В следующий раз когда выложишь код картинкой я просто свалю из темы
    4. vtlstolyarov
      Minin_inactive4471240,
      C#
          const string sql = @"
      SELECT *
      FROM certificat
      WHERE
      (@NameOfSertificat IS NULL OR NameOfSertificat = @NameOfSertificat)
      AND
      (@DateOfRelease IS NULL OR DateOfRelease = @DateOfRelease)
      ";

      using (var connection = new MySqlConnection(connectionString))
      using (var cmd = new MySqlCommand(sql, connection))
      {
      cmd.Parameters.AddWithValue("@NameOfSertificat", string.IsNullOrEmpty(NameOfSertificat) ? DBNull.Value : (object)NameOfSertificat);
      cmd.Parameters.AddWithValue("@DateOfRelease", string.IsNullOrEmpty(DateOfRelease) ? DBNull.Value : (object)DateOfRelease);

      connection.Open();
      using (var reader = cmd.ExecuteReader())
      {
      while (reader.Read())
      {
      Console.WriteLine($"{reader["NameOfSertificat"]} {reader["DateOfRelease"]}");
      }
      }
      }
Top
Loading...