gpt4 book ai didi

java - 碧 Jade 报告 : How to pass multiple SQL queries from a Java Program

转载 作者:行者123 更新时间:2023-11-29 06:17:08 26 4
gpt4 key购买 nike

我使用 iReport 工具构建了一个 Jasper Report,我在其中注册了两个数据集,一个用于填充表格中的数据,另一个用于显示图表。

使用该工具配置成功,当我看到报告时,它为我提供了正确的数据。然而,当我尝试从 Java 程序调用查询时,我迷路了。我该如何处理呢?我只能使用我的程序中的示例源代码传递单个查询。

我正在使用的示例源代码:

            Connection conn = getConnection("172.16.88.171", "1522", "orcl", "audi", "audi");
System.out.println("Got jdbc connection...");
Statement stmt = conn.createStatement();
ResultSet rset = stmt.executeQuery("SELECT DB_USER, OS_USER, USERHOST, STATEMENT_TYPE, SQL_TEXT FROM DBA_FGA_AUDIT_TRAIL");


InputStream input = new FileInputStream(new File("E:\\jasper_reports\\sampleADPTemplate_chart.jrxml"));
JasperDesign design = JRXmlLoader.load(input);
JasperReport report = JasperCompileManager.compileReport(design);

JasperPrint print = JasperFillManager.fillReport(report, new HashMap(), conn);

OutputStream output = new FileOutputStream(new File("E:\\jasper_reports\\JasperReporttoPDF.pdf"));
JasperExportManager.exportReportToPdfStream(print, output);

这只传递一个查询;我该如何传递多个查询。

谢谢。

最佳答案

您只需将您的查询完全存储在您的 iReport jrxml 文件中。为了使您的报告灵活,请使用参数。这样您就可以让用户在运行时定义所需的值。

在这里您可以看到一个示例,该示例从两个组合框中获取两个值,将它们添加到 HashMap 并将映射传递给 iReport。这些参数,例如“storeName”和“actionCode”,用于指定存储在 iReport 中的查询的值。

您可以在子报告中进行多个查询。

try {

String shopName = jComboBox1.getSelectedItem().toString();
String actionCode = jComboBox2.getSelectedItem().toString();

HashMap<String, Object> map = new HashMap<String, Object>();
map.put("storeName", shopName);
map.put("actionCode", actionCode);

URL reportFileURL = getClass().getResource("../ireps/AccessCounter.jrxml");
File reportFile = new File(reportFileURL.toURI());
JasperDesign jasperDesign = JRXmlLoader.load(reportFile);
JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, map, con);

JasperViewer jv = new JasperViewer(jasperPrint);
JDialog viewer = new JDialog(this, "Batch Report", true);
viewer.setBounds(jv.getBounds());
viewer.getContentPane().add(jv.getContentPane());
viewer.setResizable(true);
viewer.setIconImage(jv.getIconImage());
viewer.setVisible(true);

} catch (JRException exc) {
System.out.println(exc.getMessage());
} catch (URISyntaxException exs) {
System.out.println(exs.getMessage());
}

关于java - 碧 Jade 报告 : How to pass multiple SQL queries from a Java Program,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4657421/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com