2008-10-30 3 views
3

В следующем коде, который используется для получения списка продуктов в определенной строке, команда возвращает результаты только тогда, когда я жестко кодирую (конкатенировать) productLine в SQL. Замена параметров никогда не происходит.MySqlCommand Параметр не работает

  + "lineName = '@productLine' "      
      + "and isVisible = 1 "; 
     MySqlDataAdapter adap = new MySqlDataAdapter(sql, msc); 
     adap.SelectCommand.Parameters.Add("@productLine", productLine); 

ответ

7
 + "lineName = ?productLine "      
     + "and isVisible = 1 "; 
    MySqlDataAdapter adap = new MySqlDataAdapter(sql, msc); 
    adap.SelectCommand.Parameters.Add("?productLine", productLine); 
  1. Удалите апостроф (').
  2. Изменить @ на?, Который является префиксом параметров в запросах MySql.
2

Удалить апострофы (орфография?). Параметр «вокруг параметра». Они не должны быть нужны.

+0

Если они представляют собой строку, то они есть. – 2008-10-30 15:33:23

+0

Пришлось отметить резервную копию, так как на самом деле плакат правильный, а г-н Стивенсон-Леггетт ошибается. – Robert 2008-10-30 15:42:03

0

, как он сказал

+ "lineName = '@productLine' " 

должен быть

+ "lineName = @productLine " 
0

Это правильно, что никогда не бывает у вас есть

  • "lineName =" @productLine"

тр y

  • "lineName = @productLine" вместо этого, поскольку @productLine уже объявлен как строковый тип, кавычки будут добавляться тайно. Однако вы фактически передаете строку @productLine, а не значение переменной.
Смежные вопросы