Установка хранимой процедуры как оператора SQL в jasper - PullRequest
3 голосов
/ 05 марта 2012

У меня есть этот простой код:

JasperDesign jDes = JRXmlLoader.load("jasperfile.jrxml");
String sql = "Select * From table WHere address like 'St. Vincents College%'";
JRDesignQuery newQuery = new JRDesignQuery();
newQuery.setText(sql);
jDes.setQuery(newQuery);
JasperReport jRep = JasperCompileManager.compileReport(jDes);
JasperPrint jPrint = JasperFillManager.fillReport(jasperReport,null,conn);
JasperViewer.viewReport(jPrint);

так что в основном это распечатка отчета. Я хочу вместо запроса SELECT... использовать хранимую процедуру, скажем:

ProcedureName:    GenerateReportByAddress
Parameter    :    personName

Как я могу использовать CallableStatement в яшме?

CallableStatement cstmt = con.prepareCall("{call GenerateReportByAddress(?)}");
cstmt.setString(1, "secret");

Причины:

- to make query of application encapsulated by calling only stored procedure
- to avoid SQL Injection. (because some address contains Single Quote)

1 Ответ

2 голосов
/ 06 марта 2012

Jasper Reports не поддерживает хранимые процедуры.Temp таблицы - это правильный подход.Для получения дополнительной информации см. Эту запись в блоге:

Как вызывать хранимые процедуры из JasperReports

и, альтернативно, Вы можете связать Jasper Reports с другим источником данных.См. Здесь:

Java-бины в качестве источника данных Jasper Reports с использованием JRBeanCollectionDataSource

...