Java 简单JasperReport生成
我只是在做一个简单的JasperReport项目。因此,我有一个Java代码用于验证用户输入的用户名和密码,还有另一个Java类文件用于以.pdf格式导出报告。因此,请帮助我整合这两个类并生成报告。我只想在报告中打印用户名和密码Java 简单JasperReport生成,java,jasper-reports,Java,Jasper Reports,我只是在做一个简单的JasperReport项目。因此,我有一个Java代码用于验证用户输入的用户名和密码,还有另一个Java类文件用于以.pdf格式导出报告。因此,请帮助我整合这两个类并生成报告。我只想在报告中打印用户名和密码 public class Login { // JDBC driver name and database URL static final String JDBC_DRIVER = "com.mysql.jdbc.Driver"; static final Strin
public class Login {
// JDBC driver name and database URL
static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
static final String DB_URL = "jdbc:mysql://localhost/CNVS";
// Database credentials
static final String USER = "root";
static final String PASS = "root";
public static void main(String[] args) {
String userName;
String password;
Connection conn = null;
Statement stmt = null;
Scanner in = new Scanner(System.in);
System.out.println("Enter the username");
userName = in.nextLine();
System.out.println("Enter the password");
password = in.nextLine();
try {
// STEP 2: Register JDBC driver
Class.forName("com.mysql.jdbc.Driver");
// STEP 3: Open a connection
// System.out.println("Connecting to database...");
conn = DriverManager.getConnection(DB_URL, USER, PASS);
// STEP 4: Execute a query
// System.out.println("Creating statement...");
stmt = conn.createStatement();
String sql;
sql = "SELECT USER_NAME, PASSWORD FROM USER_INFO WHERE USER_NAME = '" + userName + "'";
ResultSet rs = stmt.executeQuery(sql);
// STEP 5: Extract data from result set
while (rs.next()) {
// Retrieve by column name
String dbUserName = rs.getString("USER_NAME");
String dbPassword = rs.getString("PASSWORD");
if (userName.equals(dbUserName) && password.equals(dbPassword)) {
System.out.println("Successfully Logged in ! ");
} else {
System.out.println("Please enter the valid login credentials");
}
}
// STEP 6: Clean-up environment
rs.close();
stmt.close();
conn.close();
} catch (SQLException se) {
// Handle errors for JDBC
se.printStackTrace();
} catch (Exception e) {
// Handle errors for Class.forName
e.printStackTrace();
} finally {
// finally block used to close resources
try {
if (stmt != null)
stmt.close();
} catch (SQLException se2) {
}
try {
if (conn != null)
conn.close();
} catch (SQLException se) {
se.printStackTrace();
}
}
System.out.println("Goodbye!");
}
}
下面是Java调用的类
public class JavaCallJasperReport {
public static void main(String[] args) throws JRException,
ClassNotFoundException, SQLException {
String reportSrcFile = "C:/Users/stephenjebaraj_b/Test_Report.jrxml";
// First, compile jrxml file.
JasperReport jasperReport = JasperCompileManager.compileReport(reportSrcFile);
Connection conn = MySQLConnUtils.getMySQLConnection();
// Parameters for report
Map<String, Object> parameters = new HashMap<String, Object>();
parameterMap.put(USER_NAME, dbUserName);
parameterMap.put(PASSWORD, dbPassword);
JasperPrint print = JasperFillManager.fillReport(jasperReport,
parameters, conn);
// Make sure the output directory exists.
File outDir = new File("C:/JasperReport_Test");
outDir.mkdirs();
// PDF Exportor.
JRPdfExporter exporter = new JRPdfExporter();
ExporterInput exporterInput = new SimpleExporterInput(print);
// ExporterInput
exporter.setExporterInput(exporterInput);
// ExporterOutput
OutputStreamExporterOutput exporterOutput = new SimpleOutputStreamExporterOutput(
"C:/JasperReport_Test/TestJasper.pdf");
// Output
exporter.setExporterOutput(exporterOutput);
//
SimplePdfExporterConfiguration configuration = new SimplePdfExporterConfiguration();
exporter.setConfiguration(configuration);
exporter.exportReport();
System.out.print("Done!");
}
public类JavaCallJasperReport{
公共静态void main(字符串[]args)引发异常,
ClassNotFoundException,SQLException{
String reportSrcFile=“C:/Users/stephenjebaraj_b/Test_Report.jrxml”;
//首先,编译jrxml文件。
JasperReport JasperReport=JasperCompileManager.compileReport(reportSrcFile);
Connection conn=MySQLConnUtils.getMySQLConnection();
//报告的参数
映射参数=新的HashMap();
parameterMap.put(用户名,dbUserName);
parameterMap.put(PASSWORD,dbPassword);
JasperPrint print=JasperFillManager.fillReport(jasperReport,
参数,conn);
//确保输出目录存在。
File outDir=新文件(“C:/JasperReport_测试”);
outDir.mkdirs();
//PDF导出器。
JRPdfExporter exporter=新的JRPdfExporter();
ExporterInput ExporterInput=新的SimpleExporterInput(打印);
//出口量
exporter.setExporterInput(exporterInput);
//出口输出
OutputStreamExportRoutPut exporterOutput=新的SimpleOutputStreamExportRoutPut(
“C:/JasperReport_Test/TestJasper.pdf”);
//输出
exporter.setExporterOutput(exporterOutput);
//
SimplePDExporterConfiguration配置=新的SimplePDExporterConfiguration();
exporter.setConfiguration(配置);
出口商。出口报告();
系统输出打印(“完成!”);
}
}正如@Alex K所提到的,您需要做的是编辑jrxml文件:
用户名
和密码
。参数名称必须与JavaCallJasperReport类中parameterMap.put(?)
的第一个参数相同
密码的值。只需将它的文本字段表达式设置为$P{PASSWORD}
有关更多详细信息,请参阅。您应该创建简单报告的模板(jrxml文件)并使用它。您可以使用表组件或使用经典设计(在细节栏上放置字段)eah,我已经使用iReport工具创建了jrxml文件。因此,我不知道在//parameters for report标记中应该发生什么。很抱歉,我的问题可能听起来很可笑,因为我是一个初学者,我正处于学习阶段。请帮助我,提前谢谢@Alex k。我能够解决这个问题,但编译后我得到了这个错误。你能帮我一下吗。?net.sf.jasperreports.engine.query.JRJdbcQueryExecuter警告:提供的java.sql.Connection对象为null。完成!谢谢你,我也这么做了。但是在javacallJasperreport.java类中,我需要实现调用用户名和密码的逻辑。所以,你能帮我解决这个问题吗?我本来可以解决这个问题,但是在编译之后,我得到了这个错误。你能帮我一下吗。?2016年3月11日下午7:01:19 net.sf.jasperreports.engine.query.JRJdbcQueryExecuter警告:提供的java.sql.Connection对象为空。完成!检查
JavaCallJasperReport.java
,看起来conn=MySQLConnUtils.getMySQLConnection()
的对象为空。实现调用用户名和密码的逻辑意味着什么?是否要从用户信息中选择用户名、密码…
并将结果数据与输入值进行比较?如果是这样的话,为什么不在登录类中使用相同的代码呢?
…谢谢你的建议,不过我已经解决了这个问题,但是如果生成的pdf是空白的,我就有了一个新问题!你能帮我修一下吗。