MadMyche
Скорее всего, в вашем заявлении есть несколько ошибок.
Главная проблема, которую я вижу, - это серьезная уязвимость, известная как SQL-инъекция Вы никогда не должны соединять введенные пользователем данные в виде строк вместе, чтобы сформировать инструкцию SQL. Правильный способ добавления переменных в команду заключается в следующем Параметры
string sQry = "SELECT * FROM Conductors WHERE Type = @Type AND Shape = @Shape";
SqlCommand cmd = new SqlCommand(sQry, {SqlConnection});
cmd.Parameters.AddWithValue("@Type", Convert.ToString(comboBox1.SelectedItem));
cmd.Parameters.AddWithValue("@Shape", Convert.ToString(comboBox2.SelectedItem));
Следующее, на что нужно обратить внимание, - это ваш синтаксис; обычно, если вы собираетесь обернуть свой
условия в скобках это будет вокруг всего сравнения, а не только термина, или; вы можете опустить их на довольно простых предложениях
-- yours (translated)
SELECT * FROM Conductors WHERE Type =('TypeValue') AND Shape = ('ShapeValue')
-- preferred
SELECT * FROM Conductors WHERE (Type = 'TypeValue') AND (Shape = 'ShapeValue')
-- without parenthesis
SELECT * FROM Conductors WHERE Type ='TypeValue' AND Shape = 'ShapeValue'
И последнее, на что следует обратить внимание, - это используемые термины; похоже, что некоторые из используемых имен столбцов могут быть классифицированы как
зарезервированный или
особый; в этом случае они должны быть определены как таковые, чтобы указать это в качестве имени столбца (или другого объекта SQL по мере необходимости). Правило, которое я использую для определения этого, заключается в том, что если я набираю его в SQL Studio и цвет меняется, то он должен быть завернут. Если вы посмотрите на эти примеры кода, то увидите, что
Тип был выделен. В SQL Server вы бы заключили этот термин в [квадратные скобки].
SELECT * FROM Conductors WHERE [Type] ='TypeValue' AND [Shape] = 'ShapeValue'