Заполнить SQL-оператор, основанный на нескольких флажках на JSF и Java - PullRequest
0 голосов
/ 11 февраля 2012

У меня есть страница jsf, которая содержит несколько флажков, заполненных значениями из базы данных.Из этих флажков я должен построить SQL-оператор в соответствии с флажками, на которых щелкнул пользователь.

У меня есть кнопка, которая передает значения флажков моему компоненту поддержки.

Что яхочу узнать, как я могу получить значение каждого флажка, на котором щелкнул пользователь, и построить свой оператор sql?

Например, в моем классе Java у меня есть эта переменная

private String mysql = "select * from table_name ";
private String param;
//setter getter for param

скажем, значение параметра будет: checkbox1=1&checkbox2=jane&checkbox3=25

if (!param.isEmpty())
{
// populate sql statement here
}

Оператор Sql должен быть:

select * from table_name where column1=1 and column2='jane' and column3=25

Как использовать a для каждого цикла, чтобы получить каждое значение флажка и для каждого флажказначение, которое присутствует, я конкатенирую с моим оператором sql?

1 Ответ

0 голосов
/ 11 февраля 2012

Не уверен, как цикл for входит в уравнение, вы говорите, что получаете значения своих флажков в различных параметрах, что хорошо.Итак, теперь вам просто нужно создать строку SQL.Обратите внимание, что крайне плохая идея для создания запросов SQL путем объединения предоставленных пользователем строк.Это открывает вам широкие возможности для атак SQL-инъекций .Сделайте что-то вроде этого:

final String value1 = "value from checkbox1";
final String value2 = "value from checkbox2";
final String value3 = "value from checkbox3";

final Connection conn = ... ; // Get your connection
final PreparedStatement preparedStmt = conn.prepareStatement("select * from table_name where column1=? and column2=? and column3=?");
preparedStmt.setObject(1, value1);
preparedStmt.setObject(2, value2);
preparedStmt.setObject(3, value3);
final ResultSet results = preparedStmt.executeQuery();
...