java - 在 jasper 中将存储过程设置为 SQL 语句

标签 java netbeans jasper-reports

我有这个简单的代码:

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

如何在 jasper 中使用 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)

最佳答案

Jasper Reports 不支持存储过程。临时表是正确的方法。有关详细信息,请参阅此博客条目:

How To Call Stored Procedures From JasperReports

或者,您可以将 Jasper Reports 绑定(bind)到不同的数据源。看这里:

Java beans as Jasper Reports data source using JRBeanCollectionDataSource

关于java - 在 jasper 中将存储过程设置为 SQL 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9569252/

相关文章:

java - 使用后退按钮保存共享首选项

java - 我为什么/如何收到错误 : NoClassDefFoundError: org/springframework/aop/framework/ProxyFactory

pdf - 如何在 JPanel 中使用 PDFBox 显示 pdf 文件?

java - 使用 DynamicJasper 打印报告中的自定义文本

Java访问pci-modem

java - 为什么我在 Controller 中收到来自 postman 请求的空值?

java - 自定义类和 JList

java - getFrame.SetBound 不工作 netbeans

java - 在java中运行时编译jasperreport子报表

maven-2 - Jasper Reports 的 Maven 存储库是什么?