2017-01-30 1 views
-2

Я хочу написать SQL-запрос, содержащий параметры из JSP. Я попробовал, как этотКак передать параметры JSP в SQL-запрос?

String sqlstring = "\"select"+Activity+" from backgroundcost where onpremprice =' " 
         +service+" '\""; 
PreparedStatement ps = con.prepareStatement(sqlstring); 
ResultSet rs = ps.executeQuery(); 

Я получаю сообщение об ошибке.

+0

Какая ошибка вы получаете? – Flown

+0

MysqlsyntaxerrorException –

+0

Обновите свой вопрос и добавьте StackTrace. – Flown

ответ

0

Не является коротким ответом. Плохой дизайн - логика базы данных. Передайте параметры из вашего jsp в backend java bean en, чтобы заполнить запрос

1

Прежде всего, надеюсь, вы имеете в виду, что service - это переменная, которая поступает из формы вашего JSP, что эта переменная попадает в ваш контроллер и что ваш контроллер делегирует доступ к слою базы данных другому классу.

Есть несколько проблем с вашим запросом:

  1. Вы можете использовать кавычки внутри вашего запроса, вы не должны.
  2. Что такое Activity? вероятно, вы пропустили пробельный символ между вашим выбором и значением `Activity '
  3. Целью'PreparedStatement` является избежание SQL-инъекций. Вы ДОЛЖНЫ использовать код, показанный ниже, вместо вашего параметра, непосредственно введенного в ваш встроенный оператор SQL.

  4. Рассмотрите возможность использования StringBuilder, если у вас есть несколько конкатенации строковых

"

String sqlstring = "select activity from backgroundcost where onpremprice = ?"; 

PreparedStatement ps = con.prepareStatement(sqlstring); 
ps.setString(1, service); 
ResultSet rs = ps.executeQuery(); 
+2

Спасибо, сэр за подробное объяснение. Я получил свои ошибки и ответил тоже. Спасибо! –

+0

Добро пожаловать. Вы можете выбрать мой ответ в качестве действительного ответа тогда :) – user2447161

0

делают это так ..

String sqlstring = "select * from backgroundcost where onpremprice ='"+service+" '"; 
PreparedStatement ps = con.prepareStatement(sqlstring); 
ResultSet rs = ps.executeQuery(); 

// вместо * вы можете введите имя столбца, которое нужно выбрать u.