我面临一个非常奇怪的问题。我试图在DynamicReports API中生成报告。报告是在没有 WHERE 子句的情况下生成的,但不是使用 WHERE 子句生成的。数据库是MySQL。任何帮助深表感谢。这是代码:
服务类:
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();
}
}
}
答案 0 :(得分:0)
最后我开始工作了。解决方案非常简单。我在这里为未来的用户分享代码。而不是
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}"
答案 1 :(得分:-2)
我无法保证这会解决您的特定问题,但它却无法解决问题: 而不是在源代码中编写整个查询,而不是"其中"子句和什么不是,在SQL中创建一个函数,它将pickUpDate作为参数,运行查询并返回表。调用它看起来像这样: sql_statement =" select * from function_name(" + reportDate +")"
我希望这有帮助,我使用jasperReports,因为我添加了这种方法,我的生活变得更加容易。欢呼声。