Académique Documents
Professionnel Documents
Culture Documents
JAVA AVANADO
JAVA AVANADO
1 Edio
Elaborao e Edio
SENAC - Rio Grande do Sul
Documento produzido para uso interno do
SENAC - Rio Grande do Sul
Sumrio
Linguagem Java................................................................................................................................................................ 4
JDBC.................................................................................................................................................................................. 4
API JDBC ...................................................................................................................................................................... 4
Tipo 1 Ponte JDBC-ODBC ......................................................................................................................................... 4
Tipo 2 API Parcialmente nativa.................................................................................................................................. 4
Tipo 3 Java puro JDBC-Rede ..................................................................................................................................... 4
Tipo 4 Java Puro Protocolo Banco Nativo ................................................................................................................... 4
Acessando dados via JDBC ........................................................................................................................................... 5
java.sql.DriverManager ................................................................................................................................................... 5
2.2 java.sql.Connection.................................................................................................................................................. 5
Principais Mtodos.................................................................................................................................................... 5
2.3 Java.Sql.ResultSet .................................................................................................................................................... 6
Principais Mtodos.................................................................................................................................................... 6
2.4 Java.sql.Statement.................................................................................................................................................... 6
Principais Mtodos.................................................................................................................................................... 6
2.5 Java.sql.preparedStatement ..................................................................................................................................... 6
Principais Mtodos.................................................................................................................................................... 6
2.6 java.sql.CallableStatement....................................................................................................................................... 7
Principais Mtodos.................................................................................................................................................... 7
3.0 Tutorial bsico para selecionarmos dados de uma tabela via JDBC utilizando o comando SELECT da SQL ... 7
Primeiro passo: importar java.sql.............................................................................................................................. 7
Segundo passo: Carregar o Driver do banco de dados .............................................................................................. 7
Terceiro Passo: Criar uma conexo (seo) com o banco. ........................................................................................ 7
Quarto Passo: Criar um Statement para executarmos um comando SELECT, armazenando o resultado em um
ResultSet ................................................................................................................................................................... 8
Quinto passo: Percorrer a tabela recebendo os resultados......................................................................................... 8
Relatrios com IReport .................................................................................................................................................... 9
Fundamentos de JasperReports ..................................................................................................................................... 9
Estrutura de um relatrio Jasper................................................................................................................................ 9
Report Template............................................................................................................................................................. 9
Principais Componentes.......................................................................................................................................... 10
Principais mtodos do JasperReports ...................................................................................................................... 10
Estrutura de um relatrio ............................................................................................................................................ 10
Sees ..................................................................................................................................................................... 10
Sees de um relatrio Jasper ................................................................................................................................. 10
Parmetros............................................................................................................................................................... 11
Fields....................................................................................................................................................................... 11
DataSource .............................................................................................................................................................. 11
JRDataSource.......................................................................................................................................................... 12
Variveis ...................................................................................................................................................................... 12
Expresses ................................................................................................................................................................... 12
Tabela Resumo........................................................................................................................................................ 13
Grupos..................................................................................................................................................................... 13
Subreports ............................................................................................................................................................... 14
Relatrios com IReport .................................................................................................................................................. 19
Principais componentes do IReport. ............................................................................................................................ 20
L INGUAGEM J AVA
JDBC
API JDBC
A API JDBC d ac esso a in forma es d e for ma pa dr on izad a da lingu agem Ja va . Ela
fo i dese n vo l vida pa ra qu e o pr ogra ma dor J a va prog rame d e for ma indep end en te d o
b anco d e d ados . Usa ndo o JDBC voc po de acessa r vir tu alme n te qu alqu er in forma o
t a bu lar , desd e ba ncos d e da dos r e lac io na is , p la ni lh as d e c lcu lo , o u a t arqu i vos t e x to.
Q uan do insta la mos o JD K, po r pa dr o , es ta API j es t dis pon ib iliz ada par a o uso .
A API do JD BC c omp os ta d e do is p aco tes
j a va .s q l ( u t i l iz a o b s ica )
j a va x.s ql (u ti liz a car ac ter s ticas se r ver s id e)
Par a u tiliza rmos o JD BC c om um Ba nco de Da dos relac ion al n ecess rio poss uir mos
os dr ivers es pec ficos par a es te b anco . Por e xe mp lo , se es tivermos u tilizan do o MySQ L ,
d e ve mos te r o dr i ve r J D BC p ar a o mes mo .
E x i s t em 4 ti pos de d r ive r s J D BC p ar a es c o lh erm os
P R I N C I P AI S M T O D O S
Mtodo
Descrio
Assinatura*
createStatement()
statement createStatement()
prepareStatement()
PreparedStatement prepareStatement()
prepareCall()
getMetaData()
DataBaseMetaData getMetaData()
Close()
void close()
P R I N C I P AI S M T O D O S
Mtodo
Descrio
Assinatura *
absolute()
Close()
void close()
first()
boolean first()
last()
boolean last()
previos()
boolean previos()
next()
boolean next()
getString()
getBoolean()
getShort()
getInt()
getDate()
getDouble()
getFloat
P R I N C I P AI S M T O D O S
Mtodo
Descrio
Assinatura *
getConnection()
connection getConnection()
executeQuery()
executeUpdade()
Close()
void close()
P R I N C I P AI S M T O D O S
Mtodo
executeQuery()
Descrio
Executa um comando SQL que
retorna somente um resultado
Assinatura *
ResultSet executeQuery(String sql)
executeUpdade()
setString()
setDouble
setInt()
clearParameters()
void clearParameters()
Close()
void close()
P R I N C I P AI S M T O D O S
Mtodo
Descrio
Assinatura *
setString()
setDouble
setInt()
registerOutParameter()
Close()
void close()
3.0 T U T O R I AL B S I C O P AR A S E L E C I O N AR M O S D AD O S D E U M A T AB E L A V I A
U T I L I Z AN D O O C O M AN D O SELECT D A SQL
JDBC
P R I M E I R O P AS S O : I M P O R T AR J A V A . S Q L
Par a qu e poss amos u tiliza r as c lass es do JD BC d e vemos imp or ta r es te p aco te .
import java.sql.*;
S E G U N D O P AS S O : C AR R E G AR O D R I V E R D O B AN C O D E D AD O S
De vemos ca rreg ar o dr iver dos ba ncos d e da dos q ue ire mos utiliza r.
No nosso exe mp lo a classe a ser car reg ada a co m .mys q l .jdbc .Dr i ver
C lass .fo rNa me( "c om.m ys q l .j dbc .Dr i ver ") ;
Cas o es te ja mos utiliza ndo ou tr o dr iver nec essr io le r a
d oc u men t a o do mes m o p ar a s a ber mos qu al c lass e d e ve mos c a r r eg ar .
T E R C E I R O P AS S O : C R I AR U M A C O N E X O ( S E O ) C O M O B AN C O .
String url = "jdbc :mysql://localhos t/m ys ql";
Co nnec tio n c = Dr iverMan ager .ge tC onn ec tio n(ur l ,"ro o t","") ;
U tiliza mos p ara is to o m tod o g etCo nnec tion () da c lasse D river Man ager .
O par me tr o : ur l, c on t m a S tr ing de c o nec o qu e f or ma t ada d a s eg ui n te f or m a
"<Dr iver da Sun> :<No me do Ge renc ia dor d e Ba nco> :< En dere o IP o u N ome da
Mq uina> :< Por ta> :Nome Banc o>
Se ndo que <p or ta> o pciona l se es tivermos u tilizand o a p adr o do b anco d e da dos .
O s eg und o p ar me t r o o us uri o e o ter c e ir o a s enh a d a c one x o c om o ba nco de
d ados .
Q U AR T O P AS S O : C R I AR U M S T AT E M E N T P AR A E X E C U T AR M O S U M C O M AN D O
AR M AZ E N A N D O O R E S U L T AD O E M U M R E S U L T S E T
SELECT,
S t a te me n t s tm t = c .c r e a te S ta t eme n t( ) ;
Res ul tSe t rs = s tm t.e xec u teQ uery( "se lec t * fro m mys ql.us er ") ;
O s ta temen t c on ter a o c man do SQL . Se es tivss emos e xecu tan do u m UPD AT E ou
D EL ET E de v er a mos u t i liz aro e xec u teUp da te ( ) ao in v s d o e xec ute Quer y ( )
Q U I N T O P AS S O : P E R C O R R E R A T AB E L A R E C E B E N D O O S R E S U L T AD O S .
while (rs.next()){
System.out.println("=====================================");
System.out.println("Usurio: + rs.getString("user"));
System.out.println("Senha:
" + rs.getString("password"));
System.out.println("Host:
"
+ rs.getString("host"));
System.out.println("=====================================");
}
O m t odo n e x t() do R es ul t S e t a v ana u m r eg is tr o r e t or n and o t r u e a n o s er q uan do
n o e x is tem ma is r e gi s tr os a perc or r er .
O m tod o g e tString() ob tm u ma Str ing do Res ultSet. Se a in fo rma o fosse d o tipo
in t, us ar iamos g etIn te ger( ) .
Exemplo prtico:
import java.sql.*; // Primeiro passo
/**
*
* @author Humberto Moura
*/
public class TesteSelect {
public void Conecta() {
try {
Class.forName("com.mysql.jdbc.Driver"); // Segundo Passo
}
catch (ClassNotFoundException c) {
c.printStackTrace();
System.out.println("Erro" + c.getMessage());
}
try{
String url = "jdbc:mysql://localhost/mysql";
Connection c = DriverManager.getConnection(url,"root","");
Terceiro passo
//
System.out.println("=====================================");
}
rs.close();
stmt.close();
}
catch(SQLException e){
e.printStackTrace();
System.out.println("Erro" + e.getMessage());
}
}
}
R ELATRIOS
COM
IR EPORT
E S T R U T U R A D E U M R E L AT R I O J AS P E R
R EPORT T EMPLATE
O Te mp la te de r e la t r io um arq ui v o XML c o m u ma es tru t ura esp ec i al . Es ta es tru tu r a
es t d ec la r ad a e m u m arqui v o c om a e x te nso . d td que for nec ido c om o
Jas perR epo rts .
E s te c o n t m tod as as in f or m a es s ob r e a es tru tu r a e a for m a ta o do r e la tr io.
Po de co n ter te xtos , ima gens , c ampos , a ass im por d ian te .
O Te mp la te de re latr i o de ve s er sa lvo com a e xtens o .jr xml. Ele prec isa,
p os ter ior me n te , ser co mp ilad o e m formato b in r io es pec fico do Jas perR epor ts pa ra
p ode rmos visua l iz- lo .
D e po is d e c o mp i lado , t er e mos u m ar qu i vo c om a e x tens o .j aspe r . qu e
r epres en tad o po r um ob je to d a classe J aspe rRe por t. Aps termos es te ob je to ,
n ec es s i ta mos a li me nta r o r el a tr io c om os d ad os . Ist o po de s e r fe i to a tr a vs d e u m
D a t a Sourc e ou d e u ma c onsu l ta d ir e ta a o Ba nco d e D ad os .
9
Ap s termos o r ela t rio pree nch id o , u tiliza ndo o m to do fillr epor t o u u tiliz and o a
co ne x o d ir eta ao banc o ob temos um jaspe rpr in t, u m ar qu ivo com a e xte ns o .jr pr in t q ue
p ode r ser, en to visu aliza do co m o Jaspe rView er ou se r e xpor ta do p ara u m for ma to de
a r qu i vo s up o tad o ( p df , x l s , h tm l .. . ) .
P R I N C I P AI S C O M P O N E N T E S
Nome
Descrio
Extenso
JasperDesign
O template do relatrio
jrxml
JasperReport
O JasperDesign compilado
jasper
JasperPrint
O relatrio gerado
jrprint
P R I N C I P AI S M T O D O S D O J AS P E R R E P O R T S
Classe
Mtodo
Descrio
Assinatura
JasperExportManager
exportReportToPdfFil
e()
Exporta o relatrio
para o formato .pdf
exportReportToPdfFile(ja
sperprint jp, String
arquivo)
JasperFillManager
fillReport()
Preenche o relatrio
com os dados
JasperPrint(JasperRepor
t jr, HashMap mapa,
DataSource ds)
JasperCompileManager
compileReport()
Compila o relatrio
JasperReport
compileReport(String
relatjrxml)
Par a cr iarmos u m rela t rio simp les po demos u tiliz ar es te mode lo , s alvand o-o c omo
T es te .jr xm l
<?xml version="1.0"?>
<!DOCTYPE jasperReport
PUBLIC "-//JasperReports//DTD Report Design//EN"
"http://jasperreports.sourceforge.net/dtds/jasperreport.dtd">
<jasperReport name="Teste" >
</jasperReport>
E STRUTURA DE UM RELATRIO
SEES
As s ees so pa r tes de u m re la tr io que co n tm u ma a l tur a e la rgur a esp ec fic a
p ode ndo co n ter ob je tos c omo lin has , image ns , te xtos es t tic os e c ampos .
S E E S D E U M R E L AT R I O J AS P E R
Seo
Descrio
<background>
<title>
<pageHeader>
<columnHeader>
<groupHeader>
<detail>
10
<groupFooter>
<columnFooter>
<pageFooter>
<lastPageFooter>
Defina uma seo de rodap da ltima pgina. impressa somente uma vez
no final do documento, antes do sumrio, se existir.
<Summary>
Exemplos de sees:
<pageHeader>
<band height="30">
<rectangle>
<reportElement x="0" y="0" width="555" height="25"/>
<graphicElement/>
</rectangle>
<staticText>
<reportElement x="0" y="0" width="555" height="25"/>
<textElement textAlignment="Center">
<font fontName="Helvetica" size="18"/>
</textElement>
<text>Lista de Pedidos</text>
</staticText>
</band>
</pageHeader>
P AR M E T R O S
P ar m e tros s o r e fer nc ias a o bj e tos pas s a dos no m o men t o d e p r ee nch i men t o d os
d ados no re la tr io .
P ar a dec l ar ar m os os p ar me tr os d e ve mos i n fo r ma r o s eu nome e s u a c lass e J a va
c o n for me exe mp lo :
<parameter name="Titulo
class="java.lang.String"/>
<parameter name="MaxValor" class="java.lang.Integer"/>
<parameter name="Imagem"
class="java.awt.Image"/>
E p ar a r ef er enc iar mos n o c d ig o J a v a , u t il iza mos H as hM ap c omo n o e xe mp lo :
M ap para me tr os = new H as hM ap ( ) ;
p ar a me tr os. p u t( T i tu lo , J a va D es k t op D e ve lo per ) ;
FIELDS
F i elds (c ampos) serve m par a map ear in fo rma es d o da tas ouc e para as ro tin as
g era doras d o re la t rio . Q uan do u tiliz amos u m R esu ltSe t, to dos os ca mp os d este de ve m
t er o m es mo no me e t ip os c o mpat v e is n os fi e lds .
Exemplo:
<field name="Codigo"
class="java.lang.Integer"/>
<field name="Nome"
class="java.lang.String"/>
<field name="DataNasc" class="java.util.Date"/>
D AT A S O U R C E
Da ta Source o co mpo nen te do r ela tr io qu e de fin e a or igem dos d ados .
11
O J asper Re por ts sup or ta v rios tipos d e Da taSources implemen tados a par tir da
i n te r fa c e
JRD AT A S O U R C E .
Pr inc ipa is c lasses que imp lemen tam JRD ata Source
Classe
Descrio
JREmptyDataSource
JRResultSetDataSource
JRBeanCollectionDataSource
JRBeanArrayDataSource
V ARIVEIS
V ar i v eis s o for mas d e ar maz e nar v al or es t emp or r i os qu e p ode r o s e r u ti l iz a dos
e m e xpress es fu turas . A van ta ge m de se u us o es t na poss ib i lidad e de de fin ir mos
s o me n te um a vez e po der mos u ti l iz - l a em d i ve r s as exp r es s es .
Elas p odem re fe renciar tip os in tern os de c lcu los , co mo c onta ge m (cou n t) , so ma
(s um) , mdia ( a vera ge) , men or ( low es t) , maior ( highest) , e tc .
Por e xe mp lo , c alc ular o valor to ta l d o pr oduto :
< va r i ab le na me= V al or To ta l Pro du t o c las s = ja v a .l ang .Do ub le
c a lcu la t io n= Su m >
Descrio
PAGE_NUMBER
Nmero da pgina
COLUMN_NUMBER
Nmero da coluna
REPORT_COUNT
Contador do Relatrio
PAGE_COUNT
Contador de pgina
COLUMN_COUNT
Contador de Coluna
E XPRESSES
Expr esses J asp er s o bas icamen te e xpress es J a va q ue pod em re fere ncia r ca mp os,
v a r i ve is e p ar me tr os d o r e la t r io .
Par a usa rmos u m campo em uma e xpress o usa mos $ F{No meDoc ampo}
Por exemplo, se quisermos exibir dois campos concatenados usaramos o seguinte
cdigo:
<textField>
<textFieldExpression>
$F{Codigo} + " " + $F{Nome}
</textFieldExpression>
</textField>
12
<textField>
<textFieldExpression
class="java.lang.String"><![CDATA[$F{Nome}]]>
</textFieldExpression>
</textField>
Para utilizarmos variveis em uma expresso, utilizamos o $V{} como no exemplo
abaixo:
<textField>
<textFieldExpression>
"Total : " + $V{SomaTotal} + " kg."
</textFieldExpression>
</textField>
Para utilizarmos parmetros, utilizamos o $P{} como no exemplo abaixo:
<textField>
<textFieldExpression>
"Nmero Mgico: " + $P{NumMag}
</textFieldExpression>
</textField>
T AB E L A R E S U M O
Tipo
Smbolo
Varivel
$V{NomeVariavel}
Parmetro
$P{NomeParametro}
Campo (Field)
$F{NomeCampo}
GRUPOS
Gr up os repr esen tam um mo do flexve l d e org an izar in fo rma o em um r ela t rio .
Po demos ag rup ar as in formaes p or qu alq uer d ad o n a tab ela co mo p rodu to , no me ,
s e r vi o e tc .
Po demos inc lus ive ger ar to ta lizad ores que p ode m ser inse ridos no r od ap do mes mo .
Ns po de mos ter quan tos gr upos fore m necess r ias n o re la tr io . A ord em d os grup os
d o r el a tr io r e le va n te , po is e les s e in t er - r el acio na m . U m gru po c on t m o gru po
s e gu in te e ass i m por d ia n te .
Q uan do d ec lar amos um gru po de r ela tr io, co m suas e xpresses c orres po nde n tes ,
d e ve mos dec la rar d uas se es : o c abe alho e o ro dap do gru po .
13
SUBREPORTS
U m subrelatr io nada mais do que um r ela tr io d e n tr o d e o u tr o . Is t o p o s s i b i l i ta a
cr ia o d e r ela tr ios co mp le xos e s implifican do o tr aba lh o to ta l.
Os s ubre l atr i os s o m u i to t eis p ar a c r ia r m os r e la t r i os mes tr e - d e ta lhe .
Exemplo 1 - Arquivo TesteJasper.jrxml
<?xml version="1.0"?>
<!DOCTYPE jasperReport
PUBLIC "-//JasperReports//DTD Report Design//EN"
"http://jasperreports.sourceforge.net/dtds/jasperreport.dtd">
<jasperReport name="TesteJasper">
<detail>
<band height="20">
<staticText>
<reportElement x="180" y="0" width="200" height="20"/>
<text><![CDATA[Al, Mundo]]></text>
</staticText>
</band>
</detail>
</jasperReport>
Exemplo 2 Compilando e exibindo o TesteJasper.jrxml
import net.sf.jasperreports.engine.*;
public class TesteJasperReports
{
public static void main(String[] args)
{
JasperReport jasperReport;
JasperPrint jasperPrint;
try
{
jasperReport =
JasperCompileManager.compileReport("TesteJasper.jrxml");
jasperPrint = JasperFillManager.fillReport(jasperReport, new
HashMap(), new JREmptyDataSource());
JasperExportManager.exportReportToPdfFile(jasperPrint,"TesteJasper.pdf");
}
catch (JRException e)
{
e.printStackTrace();
}
}
}
14
Exemplos de Relatrios
RelatrioBasico.jrxml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE jasperReport PUBLIC "-//JasperReports//DTD Report Design//EN"
"http://jasperreports.sourceforge.net/dtds/jasperreport.dtd">
<jasperReport name="RelatorioBasico"
<parameter name="Title" class="java.lang.String"/>
<queryString><![CDATA[select nome, custo from produto]]></queryString>
<field name="NAME" class="java.lang.String"/>
<field name="COST" class="java.lang.Double"/>
<title>
<band height="50">
<textField>
<reportElement x="0" y="0" width="200" height="50" />
<textFieldExpression
class="java.lang.String">$P{Title}</textFieldExpression>
</textField>
</band>
</title>
<pageHeader>
<band>
</band>
</pageHeader>
<columnHeader>
<band height="20">
<staticText>
<reportElement x="180" y="0" width="180" height="20"/>
<textElement>
<font isUnderline="true"/>
</textElement>
<text><![CDATA[NOME]]></text>
</staticText>
<staticText>
<reportElement x="360" y="0" width="180" height="20"/>
<textElement>
<font isUnderline="true"/>
</textElement>
<text><![CDATA[CUSTO]]></text>
</staticText>
</band>
</columnHeader>
<detail>
<band height="20">
<textField>
<reportElement x="180" y="0" width="180" height="20"/>
<textFieldExpression
class="java.lang.String"><![CDATA[$F{NOME}]]></textFieldExpression>
</textField>
<textField pattern="0.00">
<reportElement x="360" y="0" width="180" height="20"/>
15
<textFieldExpression
class="java.lang.Double"><![CDATA[$F{CUSTO}]]></textFieldExpression>
</textField>
</band>
</detail>
<columnFooter>
<band>
</band>
</columnFooter>
<pageFooter>
<band height="15">
<staticText>
<reportElement x="0" y="0" width="40" height="15"/>
<textElement/>
<text><![CDATA[Page:]]></text>
</staticText>
<textField>
<reportElement x="40" y="0" width="100" height="15"/>
<textElement/>
<textFieldExpression
class="java.lang.Integer"><![CDATA[$V{PAGE_NUMBER}]]></textFieldExpression>
</textField>
</band>
</pageFooter>
<summary>
<band>
</band>
</summary>
</jasperReport>
import
import
import
import
import
import
import
import
import
import
import
import
import
import
import
java.sql.Connection;import java.sql.DriverManager;
java.sql.ResultSet;
java.sql.SQLException;
java.sql.Statement;
java.util.HashMap;
java.util.Map;
net.sf.jasperreports.engine.JRException;
net.sf.jasperreports.engine.JRResultSetDataSource;
net.sf.jasperreports.engine.JasperCompileManager;
net.sf.jasperreports.engine.JasperFillManager;
net.sf.jasperreports.engine.JasperPrint;
net.sf.jasperreports.engine.JasperReport;
net.sf.jasperreports.engine.design.JasperDesign;
net.sf.jasperreports.engine.xml.JRXmlLoader;
net.sf.jasperreports.view.JasperViewer;
static
static
static
static
final
final
final
final
String
String
String
String
url = "jdbc:mysql://127.0.0.1/mysql";
driver = "com.mysql.jdbc.Driver";
login = "root";
senha = "";
public JasperReportTeste() {
16
}
public void criar(String arquivo) throws JRException , SQLException,
ClassNotFoundException {
//criando o jasper design
JasperDesign modelo = JRXmlLoader.load(arquivo);
//compila o relatrio
JasperReport relatorio = JasperCompileManager.compileReport( modelo
);
//estabelece conexo
Class.forName( driver );
Connection con = DriverManager.getConnection( url , login , senha );
Statement stm = con.createStatement();
String consulta = "select * from mysql.user";
ResultSet rs = stm.executeQuery( consulta );
//implementao da interface JRDataSource para DataSource ResultSet
JRResultSetDataSource jrRS = new JRResultSetDataSource( rs );
//executa o relatrio
Map parametros = new HashMap();
parametros.put("teste", new Double(10));
JasperPrint impressao = JasperFillManager.fillReport( relatorio ,
parametros,
jrRS );
//exibe o resultado
JasperViewer viewer = new JasperViewer( impressao , true );
viewer.show();
}
public static void main(String[] args) {
try {
new JasperReportExemple().criar( "relatorioteste.jrxml" );
} catch (Exception e) {
e.printStackTrace();
}
}
}
import
import
import
import
import
import
import
import
import
import
import
import
import
import
java.sql.Connection;
java.sql.DriverManager;
java.sql.ResultSet;
java.sql.SQLException;
java.sql.Statement;
java.util.HashMap;
java.util.Map;
net.sf.jasperreports.engine.JRException;
net.sf.jasperreports.engine.JRResultSetDataSource;
net.sf.jasperreports.engine.JasperCompileManager;
net.sf.jasperreports.engine.JasperFillManager;
net.sf.jasperreports.engine.JasperPrint;
net.sf.jasperreports.engine.JasperReport;
net.sf.jasperreports.engine.design.JasperDesign;
17
import net.sf.jasperreports.engine.xml.JRXmlLoader;
import net.sf.jasperreports.view.JasperViewer;
public class JasperReportExemple {
private
private
private
private
static
static
static
static
final
final
final
final
String
String
String
String
url = "jdbc:mysql://127.0.0.1/teste";
driver = "com.mysql.jdbc.Driver";
login = "";
pwd = "";
public JasperReportExemple() {
}
public void gerar( String layout ) throws JRException , SQLException,
ClassNotFoundException {
//gerando o jasper design
JasperDesign desenho = JRXmlLoader.load( layout );
//compila o relatrio
JasperReport relatorio = JasperCompileManager.compileReport( desenho
);
//estabelece conexo
Class.forName( driver );
Connection con = DriverManager.getConnection( url , login , pwd );
Statement stm = con.createStatement();
String query = "select * from turma";
ResultSet rs = stm.executeQuery( query );
//implementao da interface JRDataSource para DataSource ResultSet
JRResultSetDataSource jrRS = new JRResultSetDataSource( rs );
//executa o relatrio
Map parametros = new HashMap();
parametros.put("nota", new Double(10));
JasperPrint impressao = JasperFillManager.fillReport( relatorio ,
parametros,
jrRS );
//exibe o resultado
JasperViewer viewer = new JasperViewer( impressao , true );
viewer.show();
}
public static void main(String[] args) {
try {
new JasperReportExemple().gerar( "report.jrxml" );
} catch (Exception e) {
e.printStackTrace();
}
}
}
18
R ELATRIOS
COM
IR EPORT
O IReport uma ferramenta visual, de cdigo fonte aberto, que permite gerar um relatrio completo sem
digitarmos nenhuma linha de programao. Seu uso est associado produtividade, pois em minutos
criamos relatrios ricos em detalhes, como figuras e grficos, entre outros.
19
Es t a tela pr inc ipa l d o IR epo r t, o nd e p ode mos vis ualiz ar os pr inc ip ais compo nen tes
d o IRep or t.
20
Par a qu e poss amos utiliza r de uma for ma p adr o as co n figur a es de fon tes , c ores ...
p ode mos clic ar no me nu For matar , Styles . D epo is c l ica mos em n ew p ara de fin ir mos um
n o vo es t i lo.
Co m o Rep or t Qu er y po de mos e xec u tar co nsu l tas SQL n o ba nco de da dos . Para
ch ama-lo clic amos no men u Da ta , Quer y do R ela tr io.
21
22