MySqlCommand Параметр не работает

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

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

4 ответа

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

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

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

  • "lineName = '@productLine' "

пытаться

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

Как он сказал

+ "lineName = '@productLine' " 

должно быть

+ "lineName = @productLine " 
Другие вопросы по тегам