DynamicReports 不生成带有日期 where 子句的报告

DynamicReports not producing report with where clause on date

我遇到了一个非常奇怪的问题。我正在尝试在 DynamicReports API 中生成报告。生成的报告没有 WHERE 子句,但没有使用 WHERE 子句生成。数据库是 MySQL。任何帮助深表感谢。这是代码:

服务class:

public class ReportSevice {
    public void createReport (String reportDate) {
        System.out.println(reportDate); 
        String sql_statement = null;
        Connection connection = null;
        try {
            Class.forName("com.mysql.jdbc.Driver");
            connection = DriverManager.getConnection(
                    "jdbc:mysql://localhost:3306/world","root", "password");
            sql_statement = "SELECT id, fName, lName, pickUpDate FROM reservations_db WHERE pickUpDate = " + reportDate;
        } catch (SQLException e) {
            e.printStackTrace();
            return;
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
            return;
        } catch (Exception e) {
            e.printStackTrace();
        }

        JasperReportBuilder report = DynamicReports.report();
        report
        .columns(
                Columns.column("Customer Id", "id", DataTypes.integerType()),
                Columns.column("First Name", "fName", DataTypes.stringType()),
                Columns.column("Last Name", "lName", DataTypes.stringType()),
                Columns.column("Date", "pickUpDate", DataTypes.stringType()))
        .title(Components.text("********Report By Date********")
                .setHorizontalTextAlignment(HorizontalTextAlignment.CENTER))
        .pageFooter(Components.pageXofY())
        .setDataSource(sql_statement, connection);

        try {
            report.show();
        } catch (DRException e) {
            e.printStackTrace();
        }
    }
}

我不能保证这会解决您的特定问题,但值得一试: 不要在你的源代码中编写完整的查询,完成 "where" 子句什么的,在 SQL 中创建一个函数,它将 pickUpDate 作为参数,运行查询和 returns table。调用它看起来像这样: sql_statement = "select * from function_name(" + reportDate + ")"

我希望对您有所帮助,我使用 jasperReports,自从我采用了这种方法后,我的生活变得轻松多了。干杯。

我终于让它工作了。解决方法很简单。我在这里为未来的用户分享代码。而不是

sql_statement = "SELECT id, fName, lName, pickUpDate FROM reservations_db WHERE pickUpDate = " + reportDate;

这样写:

sql_statement = "SELECT id, fName, lName, pickUpDate FROM reservations_db WHERE pickUpDate=$P{reportDate}"