cool3690 Posted September 22, 2018 Share Posted September 22, 2018 [/code]hello, I try to write a reportI hope I can select some sql data and show in the reportthis is my sql select * from send where name like 'n%'I hope I can show all the "n" data in report like n138 ,n140......but my code only can show last datathis is my codecan anyone help me thank very much<%@page import="net.sf.jasperreports.engine.design.JasperDesign"%><%@page import="net.sf.jasperreports.engine.*" %><%@page import="net.sf.jasperreports.engine.JasperRunManager"%><%@page import="java.sql.DriverManager"%><%@page import="java.util.Map"%><%@page import="java.util.HashMap"%><%@page import="java.io.File"%><%@ page import="java.sql.*"%> <%@ include file = "db.jsp"%> //I have connect sql<%@page contentType="text/html" pageEncoding="UTF-8"%><% String sql = "select * from send where name like 'n%' "; ResultSet rs = stmt.executeQuery(sql); JRDataSource dataSource = new JRResultSetDataSource(rs); File reportFile; Map parameters = new HashMap(); byte[] bytes={0}; ServletOutputStream outStream ; int i=0; while(rs.next()) { parameters.put("name",rs.getString("name")); parameters.put("youad",rs.getString("youad")); reportFile= new File(application.getRealPath("/report/report3.jasper")); bytes= JasperRunManager.runReportToPdf(reportFile.getPath(), parameters); } response.setContentType("application/pdf"); response.setContentLength(bytes.length); outStream = response.getOutputStream(); outStream.write(bytes, 0, bytes.length); outStream.flush(); outStream.close(); rs.close();%> [/code]db.jsp<%@page contentType="text/html" pageEncoding="UTF-8"%><%@ page import="java.sql.*"%> <%! String user = "root"; String pass = ""; String url = "jdbc:mysql://localhost....."; Connection conn; Statement stmt; Class.forName("com.mysql.jdbc.Driver").newInstance(); conn = DriverManager.getConnection(url,user,pass); stmt = conn.createStatement(); %> [/code] Link to comment Share on other sites More sharing options...
hozawa Posted September 22, 2018 Share Posted September 22, 2018 >bytes= JasperRunManager.runReportToPdf(reportFile.getPath(), parameters);You haven't specified your datasource.Try the followingbytes= JasperRunManager.runReportToPdf(reportFile.getPath(), parameters, dataSource);http://jasperreports.sourceforge.net/api/net/sf/jasperreports/engine/JasperRunManager.html#runReportToPdf-net.sf.jasperreports.engine.JasperReport-java.util.Map-net.sf.jasperreports.engine.JRDataSource- Link to comment Share on other sites More sharing options...
cool3690 Posted September 23, 2018 Author Share Posted September 23, 2018 hello , hozawaI have add data sourcebut it still can show the last data.....I hope I can show all the n% data<% String sql = "select * from send where name like 'n%' "; ResultSet rs = stmt.executeQuery(sql); JRDataSource dataSource = new JRResultSetDataSource(rs); File reportFile; Map parameters = new HashMap(); byte[] bytes={0}; ServletOutputStream outStream ; int i=0; while(rs.next()) { parameters.put("name",rs.getString("name")); parameters.put("youad",rs.getString("youad")); reportFile= new File(application.getRealPath("/report/report3.jasper")); bytes= JasperRunManager.runReportToPdf(reportFile.getPath(), parameters,dataSource); response.setContentType("application/pdf"); response.setContentLength(bytes.length); } outStream = response.getOutputStream(); outStream.write(bytes, 0, bytes.length); outStream.flush(); outStream.close(); rs.close(); %> [/code] Link to comment Share on other sites More sharing options...
Solution hozawa Posted September 23, 2018 Solution Share Posted September 23, 2018 What are you doing with while(rs.next())?Instead of trying to read result set in your program, your jrxml should have "name" and "yourad" fields (not parameters but fields).Delete the following lines. while(rs.next()) { parameters.put("name",rs.getString("name")); parameters.put("youad",rs.getString("youad"));[/code] Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now