Vous êtes sur la page 1sur 22

SERVIO NACIONAL DE APRENDIZAGEM COMERCIAL

SENAC - RIO GRANDE DO SUL

JAVA AVANADO

Porto Alegre, 2007

JAVA AVANADO
1 Edio

Elaborao e Edio
SENAC - Rio Grande do Sul
Documento produzido para uso interno do
SENAC - Rio Grande do Sul

SENAC.RS - Departamento Regional no Rio Grande do Sul


Java Avanado
1 edio
Porto Alegre: SENAC Informtica / RS, 2007.
22 pp.

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

T IPO 1 P ONTE JDBC-ODBC


Os dr ivers d o Tipo 1 p ro vid enc ia m ac esso a o banc o d e d ados atra vs d e ch amadas
n a ti v as ao d r i ver ODB C . R equ er c on f ig ura o ad ici on al n a mq ui na c l ie nte . D e ve mos
e vita r a u tiliz ao em a mb ie n tes d e pr odu o , po is es te o tipo de d river ma is len to ,
t e ndo a van t age m d e j v ir ins ta la do c o m o S D K do J av a .

T IPO 2 API P ARCIALMENTE NATIVA


Es te tipo de dr iver c on ver te chamad as JD BC par a c hamad as a API do ba nco d e dad os
q ue qu erem os u ti l iz ad os . D e v em os no tar q ue es t e d r i v er u t i l iz a c d i gos n a t i vos pa r a
p r o ver o acess o .

T IPO 3 J AVA PURO JDBC-R EDE


Es te o tip o de dr iver mais fle xve l . O dr ive r ac essa o b anco d e da dos a tra vs de um
protoc olo intermedir io de rede possibilitan do o ac esso ao Banco de Dados atr a vs de
firewall.

T IPO 4 J AVA P URO P ROTOCOLO B ANCO N ATIVO


E s te dr i ver a c es s a d ir et am en te o ba nco de da dos u ti l iz a ndo o p r o toc ol o n a ti v o do
m es m o . Em ger al o dr i v er o m a is c om pac t o e r p id o .

A CESSANDO DADOS VIA JDBC


Co mo vimos a n ter io rmen te, para u tilizar mos o a API JD BC n ecess rio ter mos os
d rivers esp ec fic os p ara o b anc o de da dos qu e qu ere mos u tiliza r . A lis ta o fic ia l
atualiz ada es t em http ://developers.s un.c om/produc t/jdbc /drivers.
No noss o e xemplo ire mos u tiliza r o banc o d e dad os MySQL e o dr ive r J/Co nnec tor
T i po
4,
q ue
p od e
s er
b a i xado
no
s i te
do
fa br ican te
em
h ttp ://www .mys q l .com/p rod uc ts /da tabas e / e h ttp ://www .mys q l.c om/pro duc ts/co nnec tor /j/
r espec tivamen te.
Va mos a gor a es tu dar os pr inc ipais itens d o p aco te ja va .s ql

JAVA . SQL .D RIVER M ANAGER


A classe Dr iver Ma nage r res pons ve l po r :

G ere nciar o c on jun to d e dr ivers JD BC .


F azer a con e xo c om o banc o de dad os
Co n tro lar o log in e as mens age ns e n tre o banc o de dados e o dr ive r

P ar a q ue o D r i ver Man age r p os s a r ec onh ece r o noss o d r i v er nec es s r io c a r r eg - lo


n a m em r ia .

2.2 JAVA . SQL .C ONNECTION


A in ter face Co nnec tion r epr esenta a sesso c om o banc o de dados .

P R I N C I P AI S M T O D O S
Mtodo

Descrio

Assinatura*

createStatement()

Utilizado para submetermos comandos SQL

statement createStatement()

prepareStatement()

Utilizado em consultas parametrizadas

PreparedStatement prepareStatement()

prepareCall()

Utilizado para chamar stored procedures

CallableStatement prepareCall(String sql)

getMetaData()

Utilizado para obtermos informaes do B.D.

DataBaseMetaData getMetaData()

Close()

Fecha a sesso liberando os recursos

void close()

* po dem e xis tir ou tr as ass in a tur as p oss ve is.

2.3 J AVA .S QL .R ESULT S ET


A in te r face R esu ltSe t r epr esen ta um con jun to d e in for ma es de um ba nco de da dos
e ge r a lme n te o b ti da a tr a vs d e u ma c o nsu l ta ao mes m o .

P R I N C I P AI S M T O D O S
Mtodo

Descrio

Assinatura *

absolute()

Move o cursor para uma dada coluna

boolean absolute (int coluna)

Close()

Fecha liberando os recursos

void close()

first()

Move para o primeiro registro

boolean first()

last()

Move para o ltimo registro

boolean last()

previos()

Move para o registro anterior

boolean previos()

next()

Move para o prximo registro

boolean next()

getString()

Retorna o valor como String

String getString(String coluna)

getBoolean()

Retorna o valor como boolean

boolean getBoolen(String coluna)

getShort()

Retorna o valor como short

short getShort(String coluna)

getInt()

Retorna o valor como int

int getFloat(String coluna)

getDate()

Retorna o valor como Java.sql.Date

Date getDate(String coluna)

getDouble()

Retorna o valor como double

double getDouble(String coluna)

getFloat

Retorna o valor como float

float getFloat(String coluna)

* po dem e xis tir ou tr as ass in a tur as p oss ve is.

2.4 J AVA . SQL .S TATEMENT


A in ter fac e Sta te men t res pons vel p or exec u tar os co man dos SQL e o re torn o dos
r esu ltad os

P R I N C I P AI S M T O D O S
Mtodo

Descrio

Assinatura *

getConnection()

Retorna uma conexo

connection getConnection()

executeQuery()

Executa um comando SQL que retorna somente um


resultado

ResultSet executeQuery(String sql)

executeUpdade()

Executa um comando INSERT, DELETE ou UPDATE ou


comandos da DDL

int executeUpdate(String sql)

Close()

Fecha liberando os recursos

void close()

* po dem e xis tir ou tr as ass in a tur as p oss ve is.

2.5 J AVA . SQL . PREPARED S TATEMENT


A in ter face p rep aredSta te me n t r espo ns vel p or exec u tar os co man dos SQL pr
c o mp i lad os. E x ecu t am m a is r ap ida me n te , p oi s s o pre pa r ad os previ a men t e .

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()

Executa um comando INSERT,


DELETE ou UPDATE ou
comandos da DDL

int executeUpdate(String sql)

setString()

Substitui um valor String pelo


parmetro indicado

void setString(int par, String valor)

setDouble

Substitui um valor double pelo


parmetro indicado

void setDouble(int par, double valor)

setInt()

Substitui um valor int pelo


parmetro indicado

void setInt(int par, int valor)

clearParameters()

Limpa todos os parmetros

void clearParameters()

Close()

Fecha liberando os recursos

void close()

2.6 JAVA . SQL .C ALLABLE S TATEMENT


A in ter face Ca llab le Sta temen t a r esp onsve l p or ch amar s to red proc edures

P R I N C I P AI S M T O D O S
Mtodo

Descrio

Assinatura *

setString()

Substitui um valor String pelo


parmetro indicado

void setString(int par, String valor)

setDouble

Substitui um valor double pelo


parmetro indicado

void setDouble(int par, double valor)

setInt()

Substitui um valor int pelo


parmetro indicado

void setInt(int par, int valor)

registerOutParameter()

Registra parmetros de saida

void registerOutParameter(int num, int


tipoSQL)

Close()

Fecha liberando os recursos

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

//

Statement stmt = c.createStatement();


// Quarto passo
ResultSet rs = stmt.executeQuery("select * from mysql.user");
while (rs.next()){
//
Quinto passo
System.out.println("=====================================");
System.out.println("Usurio: " + rs.getString("user"));
System.out.println("Senha:
" + rs.getString("password"));
System.out.println("Host:
" + rs.getString("host"));
8

System.out.println("=====================================");
}
rs.close();
stmt.close();
}
catch(SQLException e){
e.printStackTrace();
System.out.println("Erro" + e.getMessage());
}
}
}

R ELATRIOS

COM

IR EPORT

F UNDAMENTOS DE J ASPER R EPORTS


Par a q ue p ossa mos co mpr een de r o IR epo rt de uma ma ne ira ma is a mp la , faz-se
n ec es s r i o q ue s a ib am os o b s ic o de J as pe r R ep or s .
J as perR epo r ts um p ode r os a b ib l io tec a , d e c d ig o f o n te ab er to , p ar a a c r ia o de
r ela tr ios . T o ta lmente escr ito e m Ja va, ess a b ib l io tec a pe rmitindo a ger ao d e
co n te do d in mico e m r ela tr ios par a s eres visu aliza dos n o vdeo , impr essos
d ir e tam en te , o u c o n ve r t i dos em f o r m a tos c o mo P D F, H TM L , XL S , C S V , R T F e X ML .
P o dem os uti l iz - l o e m q ua lq uer a pl ic a o J a v a , inc lui nd o p r ogra mas par a r od ar e m e m
d es k top e W e b , e a pl ic a es d is tr ib u das ( J 2 E E) .

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>

Define uma seo de plano de fundo. impressa em todas as pginas.

<title>

Define uma seo de Ttulo. impressa somente uma vez.

<pageHeader>

Define uma seo de cabealho de pgina. impressa a cada pgina.

<columnHeader>

Define uma seo de cabealho de coluna. impressa a cada pgina que


contm uma banda detail. Se a pgina dividida em uma ou mais colunas,
esta banda impressa em cada coluna.

<groupHeader>

Define uma seo de cabealho de grupo.

<detail>

Define uma seo de detalhe. impressa a cada registro.

10

<groupFooter>

Define uma seo de rodap de grupo

<columnFooter>

Define uma seo de rodap de coluna. impressa a cada pgina que


contm uma banda detail. Se a pgina dividida em uma ou mais colunas,
esta banda impressa em cada coluna.

<pageFooter>

Define uma sea de rodap da pgina. impressa a cada pgina.

<lastPageFooter>

Defina uma seo de rodap da ltima pgina. impressa somente uma vez
no final do documento, antes do sumrio, se existir.

<Summary>

Defina uma seo de sumrio. impressa somente uma vez no fim do


Relatrio.

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

Simula um DataSouce com um nmero virtual de


registros

JRResultSetDataSource

Uma implementao de um DataSource que


implementa um ResultSet para os dados.

JRBeanCollectionDataSource

Uma implementao de um DataSource que utiliza um


objeto Collection para os dados.

JRBeanArrayDataSource

Uma implementao de um DataSource que utiliza um


objeto array para os dados

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 >

< va r i ab le exp r ess ion> $ {V a lor Pr o du to } < / var ia bl e e xpress io n>


< /var i ab le>
A l gu mas va r i ve is pro n tas p ar a o uso :
Varivel

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

Expresses podem ser bem mais complexas:


<textField>
<textFieldExpression>
$F{Codigo} + " " + $F{Nome} + "nasceu em" +
(new SimpleDateFormat("MM/dd/yyyy")).format($F{DataNasc}) + "."
</textFieldExpression>
</textField>

<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;

public class JasperReportTeste {


private
private
private
private

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.

Figura 1 Tela de apresentao do IReport

Figura 2 Tela Principal do IReport

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.

P RINCIPAIS COMPONENTES DO IR EPORT .

Figura 3 propriedades do relatrio.

Es ta te la o nde c on fig ura mos as co ne x es co m o b anco de d ados .

Figura 4 Propriedades da conexo

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.

Figura 5 Tela de configurao de estilos

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.

Figura 6 Report Query

No me nu cr iar , alm d e e xec u tar os re la tr ios , p od emos se lec io nar de qu e tipo d e


arquivo (pdf, rtf, html, xls ...) queremos que nosso relat rio seja visualizado.

21

Figura 7 Menu Criar

22

Vous aimerez peut-être aussi