У меня есть параметры, внесённые в переменные, каждый из них может быть пустым вплоть до того, что лишь одна переменная будет заполнена параметром. Как можно реализовать поиск по базе данных только не пустыми переменными, а пустые пропускать? Поиск по бд я реализую сам, а вот как сделать так, чтобы пустые переменные не использовались в нём, я не знаю. Не писать же к каждому условию ещё по 11 условий
WHERE (@SertificatNomer IS NULL OR SertificatNomer = @SertificatNomer) AND (@DateOfRelease IS NULL OR DateOfRelease = @DateOfRelease) ... SQL WHERE (@SertificatNomer IS NULL OR SertificatNomer = @SertificatNomer) AND (@DateOfRelease IS NULL OR DateOfRelease = @DateOfRelease) ...
vtlstolyarov, просто у меня была мысль их разбить, и для каждого создать List, соответственно, записывать в него данные из ридера
Minin_inactive4471240, 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"]}"); } } } 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"]}"); } } }