【发布时间】:2014-11-10 03:43:06
【问题描述】:
我知道我的 Jasper 报告正在正确地从我的数据库中读取数据,因为它的行数与我的数据库相同。但是,它正在用“null”填充所有参数。为什么要这样做?
我的代码:
Connection connection;
Statement stmt;
ResultSet rs;
try {
String query = "SELECT CertificateCode, FirstName, LastName, IssueDate, ExpirationDate, Used FROM giftcertificates";
//System.out.println("Query created. Connecting to driver...");
Class.forName("org.h2.Driver");
//System.out.println("Connected to driver. Establishing connection to database...");
connection = DriverManager.getConnection("jdbc:h2:./GiftCertificateManagerDatabase;AUTO_SERVER=TRUE");
//System.out.println("Database connection established. Creating statement...");
stmt = connection.createStatement();
//System.out.println("Statement created. Executing query...");
rs = stmt.executeQuery(query);
//System.out.println("Query executed. Creating data source with result set...");
JRResultSetDataSource rsdt = new JRResultSetDataSource(rs);
//System.out.println("Jasper Report data source created.");
//System.out.println("Creating JasperReport and JasperPrint...");
JasperReport jasperReport;
JasperPrint jasperPrint;
//System.out.println("JasperReport and JasperPrint created. Compiling report...");
jasperReport = JasperCompileManager.compileReport("Reports/GiftCertificateReport.jrxml");
//System.out.println("Report compiled. Filling report with appropriate information...");
jasperPrint = JasperFillManager.fillReport(jasperReport, new HashMap(), rsdt);
//System.out.println("Report filled. Creating viewer...");
JasperViewer view = new JasperViewer(jasperPrint);
//System.out.println("Viewer created. Preparing to display...");
view.setVisible(true);
//System.out.println("Viewer displayed. Preparing to close connection...");
System.out.println(rs);
connection.close();
//System.out.println("Connection closed.");
} catch (ClassNotFoundException | SQLException | JRException ex) {
ex.printStackTrace();
}
【问题讨论】:
-
我猜您使用的是不同的(新的、空的)数据库。你完全明白
jdbc:h2:./GiftCertificateManagerDatabase是什么意思吗?这意味着相对于当前工作目录。我建议尝试使用绝对路径,例如jdbc:h2:/data/GiftCertificateManagerDatabase。 -
不,我完全知道那句话是什么意思。那是我用来创建和存储数据库的目录,所以我应该能够从同一个目录中读取它。
-
除此之外,我知道它正在从数据库中正确读取,因为它正在拉入与数据库包含的相同数量的空行。
-
当您使用@ThomasMueller 所描述的空数据库时,它获取的空行数无关紧要。它只是为您替换要表示的值,没有获取实际发生
标签: java database jasper-reports h2