Jump to content
Changes to the Jaspersoft community edition download ×

Jasperreport+jsp+sql like % problem


cool3690
Go to solution Solved by hozawa,

Recommended Posts

 [/code]

hello, I try to write a report

I hope I can select some sql data and show in the report

this 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 data

this is my code

can 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

  • Replies 3
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

>bytes= JasperRunManager.runReportToPdf(reportFile.getPath(), parameters);

You haven't specified your datasource.

Try the following

bytes= 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

hello , hozawa

I have add data source

but 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

  • Solution

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

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 account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...