У меня есть отчет BIRT, в котором я хочу показать определенный объем данных (привет, капитан. Очевидно). Все идет нормально. Теперь данные находятся в базе данных MSSQL, и я подключаюсь к ней с помощью драйвера jdbc, все работает отлично.
Проблема в том, что теперь я хочу передать в этот отчет параметр отчета «запрос». Я знаю, как передавать параметры в отчет следующим образом: Запрос:
SELECT * FROM table WHERE field = ?
Затем вы определяете параметр в параметрах набора данных.
Теперь я хочу сделать следующее:
SELECT * FROM table ?
Где мой параметр содержит что-то вроде
WHERE field1 = 'xyz' AND field2 = 2
Проблема в том, что BIRT автоматически добавляет одну кавычку в начало и в конец каждого строкового параметра, чтобы окончательный запрос выглядел так:
SELECT * FROM table 'WHERE field1 = 'xyz' AND field2 = 2'
Это приводит к тому, что MSSQL не может обработать запрос по очевидным причинам. Как это исправить?
заранее спасибо
SELECT * FROM table WHERE field = ? and field2 = ?
? (Можно закодировать свой запрос по желанию с помощью динамического sql, но это сделает ваш код уязвимым для атак с использованием SQL-инъекций - см. xkcd.com/327.) - person   schedule 20.01.2012