SlideShare uma empresa Scribd logo
1 de 21
Baixar para ler offline
JAVA® gerando relatórios no IReport
   com banco de dados Firebird




 Fábio P. Santos – www.chavesecreta.com.br
 admin@chavesecreta.com.br
 fpsgyn@gmail.com
JasperReports

 É uma biblioteca escrita inteiramente em JAVA que permite definir a criação de relatórios,
submetendo-o a uma fonte de dados.

A definição é feita em XML e pode ser editada manualmente.

O arquivo XML é compilado em um arquivo .jasper que é um arquivo .class normal com a extensão
modificada. As expressões Java existentes dentro do XML serão verificadas em tempo de compilação.

Este arquivo é depois executado contra uma fonte de dados, que na maioria dos casos é um banco
de dados, ou fonte de dados compatível.

A biblioteca pode ser usada para visualizar o relatório em tela ou gerar um arquivo, PDF, por
exemplo.

Estas características junto com a facilidade de utilização e custo (open source) faz do JasperReports
uma biblioteca de geração de relatório em JAVA completa.
iReport


O iReport é uma ferramenta livre de desenho para o JasperReports. Cria desenhos sofisticados com
gráficos, imagens, tabelas de referência cruzada e muito mais.

Acessa dados através de JDBC, TableModels, JavaBeans, XML, Hibernate, CSV.

Possibilita a publicação dos relatórios em PDF, XML, CSV, HTML, XHTML, textos, DOC, DOCX,
OpenOffice.

                  O JasperReports suporta vários tipos de datasources (fonte de dados) através de
                  uma interface específica chamada JRDataSource.
                  Há uma implementação padrão desta interface para objetos ResultSet, chamada
                  JRResultSetDataSource.
                  No linguajar “Jasper", um datasource somado a um arquivo .jasper gera um
                  "print", que pode ser "exportado" para os formatos PDF, HTML, XML, CVS ou XLS.
JasperForge

É um site de desenvolvimento open source para projetos comunitários e aplicações de Business
Intelligence.



http://jasperforge.org/

http://sourceforge.net/
Conheça o Firebird

História
O Firebird é derivado do código do Borland InterBase 6.0. Ele tem o código aberto e não possui
licença dupla, portanto você pode utilizá-lo em qualquer tipo de aplicação, seja ela comercial ou não,
sem pagar nada por isso - é totalmente GRATUITO!

A tecnologia usada no Firebird tem mais de 20 anos, fazendo com que ele seja um produto
muito maduro eestável.

Principais Recursos
 Suporte total a Stored Procedures e Triggers
 Transações compatíveis com ACID (atomicidade, Consistência, Isolamento e Durabilidade)
 Integridade Referencial
 Multi Generational Architecture
 Consome poucos recursos de processamento
 Linguagem nativa para Stored Procedures e Triggers (PSQL)
 Suporte para Funções Externas (UDFs)
 Praticamente não necessita de DBAs especializados
 Quase nenhuma configuração - instale e já comece a usar!
 Grande comunidade de usuários e vários lugares para se obter suporte gratuito
Conheça o Firebird

   Versão embedded do SGBD - perfeita para criação de catálogos em CDROM, aplicações
    "demo" ou standalone
   Dezenas de ferramentas de terceiros, incluindo aplicações gráficas de administração,
    replicação, etc.
   Careful writes - recuperação rápida, dispensa o uso de log de transações!
   Diversas formas de acesso ao banco de dados: nativo/API, dbExpress, ODBC, OLEDB, .Net
    provider, JDBC nativo tipo 4, Python module, PHP, Perl, etc.
   Suporte nativo para os maiores sistemas operacionais, incluindo o Windows, Linux,
    Solaris, MacOS.
   Backups incrementais
   Builds de 64bits disponíveis
   Total controle de cursores em PSQL
   Tabelas de Monitoramento
   Triggers de conexão e transação
   Tabelas temporárias
   TraceAPI - saiba o que está acontecendo no servidor

                                  www.firebirdsql.org
                                 www.firebirdnews.org
JDBC Driver
JDBC - Especificação


Java Database Connectivity ou JDBC é um conjunto de classes e interfaces (API) escritas em Java que
fazem o envio de instruções SQL para qualquer banco de dados relacional.




A API encapsula:
1. o estabelecimento da conexão com o BD
2. o envio de comandos SQL
3. o processamento dos resultados
JDBC - Tipos

Tipo 1: Ponte JDBC-ODBC
É o tipo mais simples mas restrito à plataforma Windows. Utiliza ODBC para conectar-se com o banco
de dados, convertendo métodos JDBC em chamadas às funções do ODBC. Esta ponte é normalmente
usada quando não há um driver puro-Java (tipo 4) para determinado banco de dados, pois seu uso é
desencorajado devido à dependência de plataforma.

Tipo 2: Driver API-Nativo
O driver API-Nativo traduz as chamadas JDBC para as chamadas da API cliente do banco de dados
usado. Como a Ponte JDBC-ODBC, pode precisar de software extra instalado na máquina cliente.

Tipo 3: Driver de Protocolo de Rede
Traduz a chamada JDBC para um protocolo de rede independente do banco de dados utilizado, que é
traduzido para o protocolo do banco de dados por um servidor. Por utilizar um protocolo
independente, pode conectar as aplicações clientes Java a vários bancos de dados diferentes. É o
modelo mais flexível.

Tipo 4: Driver nativo
Converte as chamadas JDBC diretamente no protocolo do banco de dados. Implementado em Java,
normalmente é independente de plataforma e escrito pelos próprios desenvolvedores. É o tipo mais
recomendado para ser usado.
JDBC - Carga

Class.forName(“org.firebirdsql.jdbc.FBDriver”);
Class.forName(“com.mysql.jdbc.Driver”);

O Class Loader tenta inicializar esta classe. Esta classe (que é o nosso driver jdbc) possui um bloco
inicializador estático, que irá registrar essa classe como um driver JDBC, avisando
o java.sql.DriverManager, pelo método registerDriver.

Connection conn = DriverManager.getConnection(........;

Desta vez, o java.sql.DriverManager vai perguntar para cada Driver registrado, se ele aceita a String
de conexão em questão. Se algum deles aceita esta String, a conexão é aberta (pelo Driver), e
retornada. Caso contrário, uma exceção é lançada. Pela própria String de conexão, você pode passar
muitos outros parâmetros (além de login, senha e nome do banco de dados), a maioria de interesse
do Driver, como por exemplo saber se aquela conexão deve estar em modo de auto reconexão caso
ela caia, e muitos outros. Este tipo de informação está na documentação seu driver.
JDBC – Conexão
Connection connFirebird = null;
Connection connMySql = null;

String host = “localhost”;

Firebird
String portaFirebird = “3050”;
String databasePrefixFirebird = “jdbc:firebirdsql:”;
String dbNameFirebird = “d:/localidades.fdb”;
String driverFirebird = “org.firebirdsql.jdbc.FBDriver”;
String userNameFirebird = “SYSDBA”;
String passwordFirebird = “masterkey”;

MySql
String portaMySql = “3306”;
String databasePrefixMySql = “jdbc:mysql:”;
String dbNameMySql = “localidades”;
String driverMySql = “com.mysql.jdbc.Driver”;
String userNameMySql = “root”;
String passwordMySql = “root”;
JDBC – Conexão

try {
     Class.forName(driverFirebird).newInstance();
     Class.forName(driverMysql).newInstance();

    String urlFirebird = databasePrefixFirebird + host + "/" + portaFirebird + ":" + dbNameFirebird;
    String urlMySql = databasePrefixMySql+"//"+host+":"+portaMySql+"/";

    connFirebird = DriverManager.getConnection(urlFirebird,userNameFirebird,passwordFirebird);
    connMySql =
DriverManager.getConnection(urlMySql+dbNameMySql,userNameMySql,passwordMySql);

    System.out.println("Conectado ao banco Firebird ou MySql");
    connFirebird.close();
    conn.MySql.Close();
    System.out.println("Desconectado do banco Firebird ou MySql");
  } catch (Exception e) {
    e.printStackTrace();
  }
JDBC – Driver


Firebird = http://www.firebirdsql.org/index.php?op=devel&sub=jdbc




MySQL = http://dev.mysql.com/downloads/connector/j/




Oracle = http://www.oracle.com/technetwork/database/features/jdbc/index-091264.html




PostgreSQL = http://jdbc.postgresql.org/
Estrutura de um Relatório
Estrutura de um Relatório
Title (Título) – É a primeira band visível na construção de um relatório vazio. Esta seção só aparece
uma vez no começo do relatório.

Page Header (cabeçalho da página) – Esta seção aparece no começo de cada página impressa.

Column Header (cabeçalho da coluna) – Esta seção só aparece no começo de cada interação com a
band detail.

Detail (detalhe) – Esta band é o local de exibição dos dados de um objeto datasource ou query. Esta
seção se repete enquanto houver linhas para serem colocadas no seu relatório de acordo com o
resultado transmitido.

Column Footer (rodapé da coluna) – Esta seção aparece abaixo de cada coluna. Análogo ao Column
Header.

Page Footer (rodapé da página) – Representa o rodapé da página. Esta seção aparece no final de
cada página.

Summary (sumário/resumo) – Rodapé do relatório, só aparece uma vez ao término do relatório.

Obs.: As bands Title e Summary não são inclusas no cabeçalho da página quando impressa em uma
página separada.
Campos, Parâmetros

Campos (Fields) são “áreas específicas” que receberão diretamente os dados das respectivas colunas
referenciadas. Por exemplo, para os dados da coluna Nome do tipo VARCHAR, da tabela Cliente,
serem mapeados para o relatório, um campo Nome deve ser definido no arquivo XML da seguinte
forma: <field name=“Nome” class=“java.lang.String”/>

Parâmetros são dados passados para a operação de preenchimento, que não podem ser
encontrados normalmente na fonte de dados. São declarados, por exemplo, da seguinte forma:
<parameter name=”TituloDoRelatorio” class=”java.lang.String”/>


E passados via código Java, através da classe HashMap:
Map parametros = new HashMap( );
parametros.put( “Nome”, “Aluno da FANAP” );


Outra importante utilização de parâmetros é na query do relatório. Por exemplo:
Select * FROM CLIENTE WHERE CLIENTE=$P{Cliente}
Variáveis

Variáveis são utilizadas para armazenar resultados temporários necessários para geração do
relatório. Elas podem referenciar tipos internos de cálculos, como contagem (count), soma (sum),
média (average), menor (lowest), maior (highest), etc.

Por exemplo, o cálculo do valor total da compra:

<variable name=“ValorTotalCompraSum” class=“java.lang.Double” calculation=“Sum”>
  <variable expression>
     ${ValorProduto}
   </variable expression>
</variable>


Existem também variáveis internas da ferramenta, com nomes “auto-explicativos”, prontas para o uso
nas    expressões:   PAGE_NUMBER,         COLUMN_NUMBER,      REPORT_COUNT,         PAGE_COUNT,
COLUMN_COUNT.
Expressões

Expressões (Expressions) são utilizadas para especificar o conteúdo de campos de texto, na
realização de cálculos frequentes, por exemplo.

Todas elas são expressões Java que podem conter em sua sintaxe:
1. campos: acessado com $F{nome}
2. parâmetros: acessado com $P{nome}
3. variáveis de relatório: acessado com $V{nome}.

Exemplo de uma expressão:

<textFieldExpression>
     “Sr.(a) ” + $F{Cliente} + " realizou um total de compras no valor de " +
     $V{ValorTotalCompraSum} + " no dia " + (new SimpleDateFormat("dd/MM/yyyy")).format($F{DataCompra}) +
     "."
</textFieldExpression>
Mãos na Massa




ireport.chavesecreta.com.br
Perguntas
Agradecimentos

Fábio P. Santos – fpsgyn@gmail.com
http://www.chavesecreta.com.br / fabio@chavesecreta.com.br




                            Muito Obrigado !!!

Mais conteúdo relacionado

Mais procurados

Apostila hibernate
Apostila hibernateApostila hibernate
Apostila hibernateAgenor Neto
 
14100015 introducao-oracle-sqlplsql-vol2-pt
14100015 introducao-oracle-sqlplsql-vol2-pt14100015 introducao-oracle-sqlplsql-vol2-pt
14100015 introducao-oracle-sqlplsql-vol2-ptguest519a5b6
 
Banco de dados oracle
Banco de dados oracleBanco de dados oracle
Banco de dados oracleEduardo Lopes
 
Aulas de Java Avançado 1 - Faculdade iDez 2010
Aulas de Java Avançado 1 - Faculdade iDez 2010Aulas de Java Avançado 1 - Faculdade iDez 2010
Aulas de Java Avançado 1 - Faculdade iDez 2010Maurício Linhares
 
PL/SQL - Conceitos Básicos
PL/SQL - Conceitos BásicosPL/SQL - Conceitos Básicos
PL/SQL - Conceitos BásicosDanilo Braga
 
Mini curso hibernate com anotações
Mini curso hibernate com anotaçõesMini curso hibernate com anotações
Mini curso hibernate com anotaçõesdieguinhomcz
 
Intro Arquitetura Oracle
Intro Arquitetura OracleIntro Arquitetura Oracle
Intro Arquitetura OraclePablo Garcia
 
Resumo Anotacoes JAX-WS Certificacao SCDJWS 5
Resumo Anotacoes JAX-WS Certificacao SCDJWS 5Resumo Anotacoes JAX-WS Certificacao SCDJWS 5
Resumo Anotacoes JAX-WS Certificacao SCDJWS 5Gilberto Holms
 
noSQL com CouchDb e PHP
noSQL com CouchDb e PHPnoSQL com CouchDb e PHP
noSQL com CouchDb e PHPTheoziran Lima
 
Funcionalidades Oracle
Funcionalidades OracleFuncionalidades Oracle
Funcionalidades Oracleharlycarreiro
 
Utilizando NoSQL no desenvolvimento de soluções inteligentes
Utilizando NoSQL no desenvolvimento de soluções inteligentesUtilizando NoSQL no desenvolvimento de soluções inteligentes
Utilizando NoSQL no desenvolvimento de soluções inteligentesChristiano Anderson
 
Usando o i report como gerador de relatórios para php
Usando o i report como gerador de relatórios para phpUsando o i report como gerador de relatórios para php
Usando o i report como gerador de relatórios para phpbrunocf007
 

Mais procurados (19)

Apostila hibernate
Apostila hibernateApostila hibernate
Apostila hibernate
 
Jpa, hibernate and jpql
Jpa, hibernate and jpqlJpa, hibernate and jpql
Jpa, hibernate and jpql
 
SQL Oracle
SQL OracleSQL Oracle
SQL Oracle
 
14100015 introducao-oracle-sqlplsql-vol2-pt
14100015 introducao-oracle-sqlplsql-vol2-pt14100015 introducao-oracle-sqlplsql-vol2-pt
14100015 introducao-oracle-sqlplsql-vol2-pt
 
Diagramas de distribuicao
Diagramas de distribuicaoDiagramas de distribuicao
Diagramas de distribuicao
 
Banco de dados oracle
Banco de dados oracleBanco de dados oracle
Banco de dados oracle
 
Apostila Oracle 10g
Apostila Oracle 10gApostila Oracle 10g
Apostila Oracle 10g
 
Web Scale Data Management
Web Scale Data ManagementWeb Scale Data Management
Web Scale Data Management
 
Aulas de Java Avançado 1 - Faculdade iDez 2010
Aulas de Java Avançado 1 - Faculdade iDez 2010Aulas de Java Avançado 1 - Faculdade iDez 2010
Aulas de Java Avançado 1 - Faculdade iDez 2010
 
PL/SQL - Conceitos Básicos
PL/SQL - Conceitos BásicosPL/SQL - Conceitos Básicos
PL/SQL - Conceitos Básicos
 
Mini curso hibernate com anotações
Mini curso hibernate com anotaçõesMini curso hibernate com anotações
Mini curso hibernate com anotações
 
JPA com Hibernate
JPA com HibernateJPA com Hibernate
JPA com Hibernate
 
Intro Arquitetura Oracle
Intro Arquitetura OracleIntro Arquitetura Oracle
Intro Arquitetura Oracle
 
Resumo Anotacoes JAX-WS Certificacao SCDJWS 5
Resumo Anotacoes JAX-WS Certificacao SCDJWS 5Resumo Anotacoes JAX-WS Certificacao SCDJWS 5
Resumo Anotacoes JAX-WS Certificacao SCDJWS 5
 
noSQL com CouchDb e PHP
noSQL com CouchDb e PHPnoSQL com CouchDb e PHP
noSQL com CouchDb e PHP
 
Funcionalidades Oracle
Funcionalidades OracleFuncionalidades Oracle
Funcionalidades Oracle
 
Palestra
PalestraPalestra
Palestra
 
Utilizando NoSQL no desenvolvimento de soluções inteligentes
Utilizando NoSQL no desenvolvimento de soluções inteligentesUtilizando NoSQL no desenvolvimento de soluções inteligentes
Utilizando NoSQL no desenvolvimento de soluções inteligentes
 
Usando o i report como gerador de relatórios para php
Usando o i report como gerador de relatórios para phpUsando o i report como gerador de relatórios para php
Usando o i report como gerador de relatórios para php
 

Destaque

การเขียนโปรแกรมโดยใช้ Net bean
การเขียนโปรแกรมโดยใช้ Net beanการเขียนโปรแกรมโดยใช้ Net bean
การเขียนโปรแกรมโดยใช้ Net beanTanyong Kiss'memory
 
Introdução a Grails: Um framework veloz e poderoso
Introdução a Grails: Um framework veloz e poderosoIntrodução a Grails: Um framework veloz e poderoso
Introdução a Grails: Um framework veloz e poderosoBruno Lopes
 
การเขียนโปรแกรมโดยใช้ NetBeans
การเขียนโปรแกรมโดยใช้ NetBeansการเขียนโปรแกรมโดยใช้ NetBeans
การเขียนโปรแกรมโดยใช้ NetBeansNomjeab Nook
 
RelatÓrio Da Palestra Final
RelatÓrio Da Palestra FinalRelatÓrio Da Palestra Final
RelatÓrio Da Palestra FinalHELDERTRBALHO
 
Tutorial: Gerando Relatórios Com JasperReports e iReports no Netbeans
Tutorial: Gerando Relatórios Com JasperReports e iReports no NetbeansTutorial: Gerando Relatórios Com JasperReports e iReports no Netbeans
Tutorial: Gerando Relatórios Com JasperReports e iReports no NetbeansFlávio Araújo
 
Relatório de observação
Relatório de observaçãoRelatório de observação
Relatório de observaçãoArte Tecnologia
 
Modelo relatorio
Modelo relatorioModelo relatorio
Modelo relatoriorsaloes
 

Destaque (10)

การเขียนโปรแกรมโดยใช้ Net bean
การเขียนโปรแกรมโดยใช้ Net beanการเขียนโปรแกรมโดยใช้ Net bean
การเขียนโปรแกรมโดยใช้ Net bean
 
Jasper reports
Jasper reportsJasper reports
Jasper reports
 
Introdução a Grails: Um framework veloz e poderoso
Introdução a Grails: Um framework veloz e poderosoIntrodução a Grails: Um framework veloz e poderoso
Introdução a Grails: Um framework veloz e poderoso
 
การเขียนโปรแกรมโดยใช้ NetBeans
การเขียนโปรแกรมโดยใช้ NetBeansการเขียนโปรแกรมโดยใช้ NetBeans
การเขียนโปรแกรมโดยใช้ NetBeans
 
Javafree
JavafreeJavafree
Javafree
 
RelatÓrio Da Palestra Final
RelatÓrio Da Palestra FinalRelatÓrio Da Palestra Final
RelatÓrio Da Palestra Final
 
Os sete nomes de jesus
Os sete nomes de jesusOs sete nomes de jesus
Os sete nomes de jesus
 
Tutorial: Gerando Relatórios Com JasperReports e iReports no Netbeans
Tutorial: Gerando Relatórios Com JasperReports e iReports no NetbeansTutorial: Gerando Relatórios Com JasperReports e iReports no Netbeans
Tutorial: Gerando Relatórios Com JasperReports e iReports no Netbeans
 
Relatório de observação
Relatório de observaçãoRelatório de observação
Relatório de observação
 
Modelo relatorio
Modelo relatorioModelo relatorio
Modelo relatorio
 

Semelhante a Apresentação palestra ireport

Silo.tips aula 4-jdbc-java-database-connectivity
Silo.tips aula 4-jdbc-java-database-connectivitySilo.tips aula 4-jdbc-java-database-connectivity
Silo.tips aula 4-jdbc-java-database-connectivityffeitosa
 
Introdução à programação para web com Java - Módulo 01: Conexão com bamco de...
Introdução à programação para web com Java -  Módulo 01: Conexão com bamco de...Introdução à programação para web com Java -  Módulo 01: Conexão com bamco de...
Introdução à programação para web com Java - Módulo 01: Conexão com bamco de...Professor Samuel Ribeiro
 
Bancos de dados e jdbc java para desenvolvimento web
Bancos de dados e jdbc   java para desenvolvimento webBancos de dados e jdbc   java para desenvolvimento web
Bancos de dados e jdbc java para desenvolvimento websilvio_sas
 
NoSQL com Zend Framework 2
NoSQL com Zend Framework 2NoSQL com Zend Framework 2
NoSQL com Zend Framework 2Flávio Lisboa
 
PHPMyadmin - Introdução
PHPMyadmin - IntroduçãoPHPMyadmin - Introdução
PHPMyadmin - IntroduçãoMarco Pinheiro
 
hibernate annotation
hibernate annotationhibernate annotation
hibernate annotationeduardo dias
 
PostgreSQL-Prático.pdf
PostgreSQL-Prático.pdfPostgreSQL-Prático.pdf
PostgreSQL-Prático.pdfArleiEvaristo
 
Web Sphere Application Server
Web Sphere Application ServerWeb Sphere Application Server
Web Sphere Application ServerFabricio Carvalho
 
Symfony Live - São Paulo 2019 - Como construir uma API em um passo com API Pl...
Symfony Live - São Paulo 2019 - Como construir uma API em um passo com API Pl...Symfony Live - São Paulo 2019 - Como construir uma API em um passo com API Pl...
Symfony Live - São Paulo 2019 - Como construir uma API em um passo com API Pl...BrunoSouza617
 
Introducao banco de dados
Introducao banco de dadosIntroducao banco de dados
Introducao banco de dadosvaniakenob
 
Mini curso hibernate com anotações
Mini curso hibernate com anotaçõesMini curso hibernate com anotações
Mini curso hibernate com anotaçõesdieguinhomcz
 
JasperReports Tecnicas de geracao_de_relatorios1
JasperReports  Tecnicas de geracao_de_relatorios1JasperReports  Tecnicas de geracao_de_relatorios1
JasperReports Tecnicas de geracao_de_relatorios1Sliedesharessbarbosa
 
FireDAC - Embarcadero Conference 2015
FireDAC - Embarcadero Conference 2015FireDAC - Embarcadero Conference 2015
FireDAC - Embarcadero Conference 2015Guinther Pauli
 

Semelhante a Apresentação palestra ireport (20)

Web Sphere
Web SphereWeb Sphere
Web Sphere
 
Silo.tips aula 4-jdbc-java-database-connectivity
Silo.tips aula 4-jdbc-java-database-connectivitySilo.tips aula 4-jdbc-java-database-connectivity
Silo.tips aula 4-jdbc-java-database-connectivity
 
Introdução à programação para web com Java - Módulo 01: Conexão com bamco de...
Introdução à programação para web com Java -  Módulo 01: Conexão com bamco de...Introdução à programação para web com Java -  Módulo 01: Conexão com bamco de...
Introdução à programação para web com Java - Módulo 01: Conexão com bamco de...
 
Bancos de dados e jdbc java para desenvolvimento web
Bancos de dados e jdbc   java para desenvolvimento webBancos de dados e jdbc   java para desenvolvimento web
Bancos de dados e jdbc java para desenvolvimento web
 
NoSQL com Zend Framework 2
NoSQL com Zend Framework 2NoSQL com Zend Framework 2
NoSQL com Zend Framework 2
 
PHPMyadmin - Introdução
PHPMyadmin - IntroduçãoPHPMyadmin - Introdução
PHPMyadmin - Introdução
 
hibernate annotation
hibernate annotationhibernate annotation
hibernate annotation
 
PostgreSQL-Prático.pdf
PostgreSQL-Prático.pdfPostgreSQL-Prático.pdf
PostgreSQL-Prático.pdf
 
Web Sphere Application Server
Web Sphere Application ServerWeb Sphere Application Server
Web Sphere Application Server
 
NoSQL Livre
NoSQL LivreNoSQL Livre
NoSQL Livre
 
Tema3.pptx
Tema3.pptxTema3.pptx
Tema3.pptx
 
Tema3.pptx
Tema3.pptxTema3.pptx
Tema3.pptx
 
Symfony Live - São Paulo 2019 - Como construir uma API em um passo com API Pl...
Symfony Live - São Paulo 2019 - Como construir uma API em um passo com API Pl...Symfony Live - São Paulo 2019 - Como construir uma API em um passo com API Pl...
Symfony Live - São Paulo 2019 - Como construir uma API em um passo com API Pl...
 
Jsp+Jdbc+Servlets
Jsp+Jdbc+ServletsJsp+Jdbc+Servlets
Jsp+Jdbc+Servlets
 
teste86940.78038637294
teste86940.78038637294teste86940.78038637294
teste86940.78038637294
 
Introducao banco de dados
Introducao banco de dadosIntroducao banco de dados
Introducao banco de dados
 
Mini curso hibernate com anotações
Mini curso hibernate com anotaçõesMini curso hibernate com anotações
Mini curso hibernate com anotações
 
JasperReports Tecnicas de geracao_de_relatorios1
JasperReports  Tecnicas de geracao_de_relatorios1JasperReports  Tecnicas de geracao_de_relatorios1
JasperReports Tecnicas de geracao_de_relatorios1
 
FireDAC - Embarcadero Conference 2015
FireDAC - Embarcadero Conference 2015FireDAC - Embarcadero Conference 2015
FireDAC - Embarcadero Conference 2015
 
Tutorial JSF 2.0 (2012)
Tutorial JSF 2.0 (2012)Tutorial JSF 2.0 (2012)
Tutorial JSF 2.0 (2012)
 

Apresentação palestra ireport

  • 1. JAVA® gerando relatórios no IReport com banco de dados Firebird Fábio P. Santos – www.chavesecreta.com.br admin@chavesecreta.com.br fpsgyn@gmail.com
  • 2. JasperReports  É uma biblioteca escrita inteiramente em JAVA que permite definir a criação de relatórios, submetendo-o a uma fonte de dados. A definição é feita em XML e pode ser editada manualmente. O arquivo XML é compilado em um arquivo .jasper que é um arquivo .class normal com a extensão modificada. As expressões Java existentes dentro do XML serão verificadas em tempo de compilação. Este arquivo é depois executado contra uma fonte de dados, que na maioria dos casos é um banco de dados, ou fonte de dados compatível. A biblioteca pode ser usada para visualizar o relatório em tela ou gerar um arquivo, PDF, por exemplo. Estas características junto com a facilidade de utilização e custo (open source) faz do JasperReports uma biblioteca de geração de relatório em JAVA completa.
  • 3. iReport O iReport é uma ferramenta livre de desenho para o JasperReports. Cria desenhos sofisticados com gráficos, imagens, tabelas de referência cruzada e muito mais. Acessa dados através de JDBC, TableModels, JavaBeans, XML, Hibernate, CSV. Possibilita a publicação dos relatórios em PDF, XML, CSV, HTML, XHTML, textos, DOC, DOCX, OpenOffice. O JasperReports suporta vários tipos de datasources (fonte de dados) através de uma interface específica chamada JRDataSource. Há uma implementação padrão desta interface para objetos ResultSet, chamada JRResultSetDataSource. No linguajar “Jasper", um datasource somado a um arquivo .jasper gera um "print", que pode ser "exportado" para os formatos PDF, HTML, XML, CVS ou XLS.
  • 4. JasperForge É um site de desenvolvimento open source para projetos comunitários e aplicações de Business Intelligence. http://jasperforge.org/ http://sourceforge.net/
  • 5. Conheça o Firebird História O Firebird é derivado do código do Borland InterBase 6.0. Ele tem o código aberto e não possui licença dupla, portanto você pode utilizá-lo em qualquer tipo de aplicação, seja ela comercial ou não, sem pagar nada por isso - é totalmente GRATUITO! A tecnologia usada no Firebird tem mais de 20 anos, fazendo com que ele seja um produto muito maduro eestável. Principais Recursos  Suporte total a Stored Procedures e Triggers  Transações compatíveis com ACID (atomicidade, Consistência, Isolamento e Durabilidade)  Integridade Referencial  Multi Generational Architecture  Consome poucos recursos de processamento  Linguagem nativa para Stored Procedures e Triggers (PSQL)  Suporte para Funções Externas (UDFs)  Praticamente não necessita de DBAs especializados  Quase nenhuma configuração - instale e já comece a usar!  Grande comunidade de usuários e vários lugares para se obter suporte gratuito
  • 6. Conheça o Firebird  Versão embedded do SGBD - perfeita para criação de catálogos em CDROM, aplicações "demo" ou standalone  Dezenas de ferramentas de terceiros, incluindo aplicações gráficas de administração, replicação, etc.  Careful writes - recuperação rápida, dispensa o uso de log de transações!  Diversas formas de acesso ao banco de dados: nativo/API, dbExpress, ODBC, OLEDB, .Net provider, JDBC nativo tipo 4, Python module, PHP, Perl, etc.  Suporte nativo para os maiores sistemas operacionais, incluindo o Windows, Linux, Solaris, MacOS.  Backups incrementais  Builds de 64bits disponíveis  Total controle de cursores em PSQL  Tabelas de Monitoramento  Triggers de conexão e transação  Tabelas temporárias  TraceAPI - saiba o que está acontecendo no servidor www.firebirdsql.org www.firebirdnews.org
  • 8. JDBC - Especificação Java Database Connectivity ou JDBC é um conjunto de classes e interfaces (API) escritas em Java que fazem o envio de instruções SQL para qualquer banco de dados relacional. A API encapsula: 1. o estabelecimento da conexão com o BD 2. o envio de comandos SQL 3. o processamento dos resultados
  • 9. JDBC - Tipos Tipo 1: Ponte JDBC-ODBC É o tipo mais simples mas restrito à plataforma Windows. Utiliza ODBC para conectar-se com o banco de dados, convertendo métodos JDBC em chamadas às funções do ODBC. Esta ponte é normalmente usada quando não há um driver puro-Java (tipo 4) para determinado banco de dados, pois seu uso é desencorajado devido à dependência de plataforma. Tipo 2: Driver API-Nativo O driver API-Nativo traduz as chamadas JDBC para as chamadas da API cliente do banco de dados usado. Como a Ponte JDBC-ODBC, pode precisar de software extra instalado na máquina cliente. Tipo 3: Driver de Protocolo de Rede Traduz a chamada JDBC para um protocolo de rede independente do banco de dados utilizado, que é traduzido para o protocolo do banco de dados por um servidor. Por utilizar um protocolo independente, pode conectar as aplicações clientes Java a vários bancos de dados diferentes. É o modelo mais flexível. Tipo 4: Driver nativo Converte as chamadas JDBC diretamente no protocolo do banco de dados. Implementado em Java, normalmente é independente de plataforma e escrito pelos próprios desenvolvedores. É o tipo mais recomendado para ser usado.
  • 10. JDBC - Carga Class.forName(“org.firebirdsql.jdbc.FBDriver”); Class.forName(“com.mysql.jdbc.Driver”); O Class Loader tenta inicializar esta classe. Esta classe (que é o nosso driver jdbc) possui um bloco inicializador estático, que irá registrar essa classe como um driver JDBC, avisando o java.sql.DriverManager, pelo método registerDriver. Connection conn = DriverManager.getConnection(........; Desta vez, o java.sql.DriverManager vai perguntar para cada Driver registrado, se ele aceita a String de conexão em questão. Se algum deles aceita esta String, a conexão é aberta (pelo Driver), e retornada. Caso contrário, uma exceção é lançada. Pela própria String de conexão, você pode passar muitos outros parâmetros (além de login, senha e nome do banco de dados), a maioria de interesse do Driver, como por exemplo saber se aquela conexão deve estar em modo de auto reconexão caso ela caia, e muitos outros. Este tipo de informação está na documentação seu driver.
  • 11. JDBC – Conexão Connection connFirebird = null; Connection connMySql = null; String host = “localhost”; Firebird String portaFirebird = “3050”; String databasePrefixFirebird = “jdbc:firebirdsql:”; String dbNameFirebird = “d:/localidades.fdb”; String driverFirebird = “org.firebirdsql.jdbc.FBDriver”; String userNameFirebird = “SYSDBA”; String passwordFirebird = “masterkey”; MySql String portaMySql = “3306”; String databasePrefixMySql = “jdbc:mysql:”; String dbNameMySql = “localidades”; String driverMySql = “com.mysql.jdbc.Driver”; String userNameMySql = “root”; String passwordMySql = “root”;
  • 12. JDBC – Conexão try { Class.forName(driverFirebird).newInstance(); Class.forName(driverMysql).newInstance(); String urlFirebird = databasePrefixFirebird + host + "/" + portaFirebird + ":" + dbNameFirebird; String urlMySql = databasePrefixMySql+"//"+host+":"+portaMySql+"/"; connFirebird = DriverManager.getConnection(urlFirebird,userNameFirebird,passwordFirebird); connMySql = DriverManager.getConnection(urlMySql+dbNameMySql,userNameMySql,passwordMySql); System.out.println("Conectado ao banco Firebird ou MySql"); connFirebird.close(); conn.MySql.Close(); System.out.println("Desconectado do banco Firebird ou MySql"); } catch (Exception e) { e.printStackTrace(); }
  • 13. JDBC – Driver Firebird = http://www.firebirdsql.org/index.php?op=devel&sub=jdbc MySQL = http://dev.mysql.com/downloads/connector/j/ Oracle = http://www.oracle.com/technetwork/database/features/jdbc/index-091264.html PostgreSQL = http://jdbc.postgresql.org/
  • 14. Estrutura de um Relatório
  • 15. Estrutura de um Relatório Title (Título) – É a primeira band visível na construção de um relatório vazio. Esta seção só aparece uma vez no começo do relatório. Page Header (cabeçalho da página) – Esta seção aparece no começo de cada página impressa. Column Header (cabeçalho da coluna) – Esta seção só aparece no começo de cada interação com a band detail. Detail (detalhe) – Esta band é o local de exibição dos dados de um objeto datasource ou query. Esta seção se repete enquanto houver linhas para serem colocadas no seu relatório de acordo com o resultado transmitido. Column Footer (rodapé da coluna) – Esta seção aparece abaixo de cada coluna. Análogo ao Column Header. Page Footer (rodapé da página) – Representa o rodapé da página. Esta seção aparece no final de cada página. Summary (sumário/resumo) – Rodapé do relatório, só aparece uma vez ao término do relatório. Obs.: As bands Title e Summary não são inclusas no cabeçalho da página quando impressa em uma página separada.
  • 16. Campos, Parâmetros Campos (Fields) são “áreas específicas” que receberão diretamente os dados das respectivas colunas referenciadas. Por exemplo, para os dados da coluna Nome do tipo VARCHAR, da tabela Cliente, serem mapeados para o relatório, um campo Nome deve ser definido no arquivo XML da seguinte forma: <field name=“Nome” class=“java.lang.String”/> Parâmetros são dados passados para a operação de preenchimento, que não podem ser encontrados normalmente na fonte de dados. São declarados, por exemplo, da seguinte forma: <parameter name=”TituloDoRelatorio” class=”java.lang.String”/> E passados via código Java, através da classe HashMap: Map parametros = new HashMap( ); parametros.put( “Nome”, “Aluno da FANAP” ); Outra importante utilização de parâmetros é na query do relatório. Por exemplo: Select * FROM CLIENTE WHERE CLIENTE=$P{Cliente}
  • 17. Variáveis Variáveis são utilizadas para armazenar resultados temporários necessários para geração do relatório. Elas podem referenciar tipos internos de cálculos, como contagem (count), soma (sum), média (average), menor (lowest), maior (highest), etc. Por exemplo, o cálculo do valor total da compra: <variable name=“ValorTotalCompraSum” class=“java.lang.Double” calculation=“Sum”> <variable expression> ${ValorProduto} </variable expression> </variable> Existem também variáveis internas da ferramenta, com nomes “auto-explicativos”, prontas para o uso nas expressões: PAGE_NUMBER, COLUMN_NUMBER, REPORT_COUNT, PAGE_COUNT, COLUMN_COUNT.
  • 18. Expressões Expressões (Expressions) são utilizadas para especificar o conteúdo de campos de texto, na realização de cálculos frequentes, por exemplo. Todas elas são expressões Java que podem conter em sua sintaxe: 1. campos: acessado com $F{nome} 2. parâmetros: acessado com $P{nome} 3. variáveis de relatório: acessado com $V{nome}. Exemplo de uma expressão: <textFieldExpression> “Sr.(a) ” + $F{Cliente} + " realizou um total de compras no valor de " + $V{ValorTotalCompraSum} + " no dia " + (new SimpleDateFormat("dd/MM/yyyy")).format($F{DataCompra}) + "." </textFieldExpression>
  • 21. Agradecimentos Fábio P. Santos – fpsgyn@gmail.com http://www.chavesecreta.com.br / fabio@chavesecreta.com.br Muito Obrigado !!!