PreparedStatement

2 respostas
lordtiago
Bom dia irmãos do GUJ estou iniciando a empreitada com JasperReports e iReport, e na minha aventura vi um negócio legal também que são as consultas onde criamos parâmetros. Acontece que dá erro na linha onde instancio o PreparedStatement, creio que seja o cast que fiz, mas não tenho certeza pois é a primeira vez que mexo com isso. Se alguém tiver alguma sugestão ou dica, pra resolver este NullPointerException.
Conexao conn = new Conexao();
      Connection con=  (Connection) conn.conn;
        try { 
        PreparedStatement consulta = (PreparedStatement) con.prepareStatement
                (
"SELECT"+
     "sessao.`idSessao` AS sessao_idSessao,"+
     "pedido.`numNota` AS pedido_numNota,"+
     "pedido.`qnt` AS pedido_qnt,"+
     "cardapio.`nome` AS cardapio_nome,"+
     "cardapio.`valor` AS cardapio_valor,"+
     "sessao.`idMesa` AS sessao_idMesa,"+
     "sessao.`abertura` AS sessao_abertura,"+
     "sessao.`fechamento` AS sessao_fechamento,"+
     "sessao.`permanencia` AS sessao_permanencia,"+
     "sessao.`idCliente` AS sessao_idCliente,"+
     "clientes.`CPF` AS clientes_CPF,"+
     "sessao.`totalConta` AS sessao_totalConta,"+
     "mensagemempresa.`mensagem` AS mensagemempresa_mensagem"+
"FROM"+
     "`conta` conta INNER JOIN `sessao` sessao ON conta.`numConta` = sessao.`numNota`"+
     "AND conta.`idSessao` = sessao.`idSessao`"+
     "INNER JOIN `pedido` pedido ON conta.`numConta` = pedido.`numNota`"+
     "INNER JOIN `clientes` clientes ON conta.`idCliente` = clientes.`idCliente`"+
     "INNER JOIN `mensagemempresa` mensagemempresa ON conta.`idMensagem` = mensagemempresa.`idMensagem`"+
     "AND clientes.`idCliente` = sessao.`idCliente`"+
     "INNER JOIN `cardapio` cardapio ON pedido.`codigo` = cardapio.`codigo`"+
"WHERE"+
     "sessao.idSessao = ?"+
 "AND mensagemEmpresa.idMensagem = ?"
);
               consulta.setInt(1, idSessao); //PEGA O PARAMETRO DA SUA APLICAÇÃO
               consulta.setInt(2, idMensagem);              
ResultSet rs = consulta.executeQuery();
          /* implementação da interface JRDataSource para DataSource ResultSet */
JRResultSetDataSource jrRS = new JRResultSetDataSource(rs);

/* HashMap de parametros utilizados no relatório. Sempre instanciados */
HashMap parameters = new HashMap(); 
            //  HashMap<String, Integer> map = new HashMap<String, Integer>();
               String arquivoJasper = "C://MonteCook//dist//lib//CupomFiscal.jasper";
      //  map.put("idSessao", idSessao);
   //     String a = String.valueOf(cbIdMensagem.getSelectedItem());
  //      System.out.println(a);
  //      System.out.println(idSessao);
   //     map.put("idMensagem", Integer.valueOf(a));
  //     JasperPrint jasperPrint =  JasperFillManager.fillReport(arquivoJasper, map, conn.conn);
               JasperPrint jasperPrint =  JasperFillManager.fillReport(arquivoJasper, parameters, jrRS);
        //Vizualiza
JasperViewer.viewReport(jasperPrint,false);

2 Respostas

M

O cast não é necessário. Certifique-se que importou a classe PreparedStatement do pacote certo.

lordtiago

Fiz os devidos imports, mas me apresenta este erro:

java.lang.NullPointerException
at net.sf.jasperreports.engine.JRPropertiesMap.readObject(JRPropertiesMap.java:185)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

conn.conectar();
      Connection con=  (Connection) conn.conn;      
        try { 
        PreparedStatement consulta =  con.prepareStatement
                (
"SELECT      sessao.`idSessao` AS sessao_idSessao,     pedido.`numNota` AS pedido_numNota,     pedido.`qnt` AS pedido_qnt,      cardapio.`nome` AS cardapio_nome,     cardapio.`valor` AS cardapio_valor,      sessao.`idMesa` AS sessao_idMesa,      sessao.`abertura` AS sessao_abertura,      sessao.`fechamento` AS sessao_fechamento,      sessao.`permanencia` AS sessao_permanencia,      sessao.`idCliente` AS sessao_idCliente,      clientes.`CPF` AS clientes_CPF,      sessao.`totalConta` AS sessao_totalConta,      mensagemempresa.`mensagem` AS mensagemempresa_mensagem FROM       `conta` conta INNER JOIN `sessao` sessao ON conta.`numConta` = sessao.`numNota`       AND conta.`idSessao` = sessao.`idSessao`       INNER JOIN `pedido` pedido ON conta.`numConta` = pedido.`numNota`       INNER JOIN `clientes` clientes ON conta.`idCliente` = clientes.`idCliente`       INNER JOIN `mensagemempresa` mensagemempresa ON conta.`idMensagem` = mensagemempresa.`idMensagem`       AND clientes.`idCliente` = sessao.`idCliente`       INNER JOIN `cardapio` cardapio ON pedido.`codigo` = cardapio.`codigo` WHERE       sessao.idSessao = '"+idSessao+"'   AND mensagemEmpresa.idMensagem = '"+idMensagem+"' "
);
              // consulta.setInt(1, idSessao); //PEGA O PARAMETRO DA SUA APLICAÇÃO
             //  consulta.setInt(2, idMensagem);              
ResultSet rs = consulta.executeQuery();
          /* implementação da interface JRDataSource para DataSource ResultSet */
JRResultSetDataSource jrRS = new JRResultSetDataSource(rs);

/* HashMap de parametros utilizados no relatório. Sempre instanciados */
HashMap parameters = new HashMap(); 
             // HashMap<String, Integer> map = new HashMap<String, Integer>();
               String arquivoJasper = "C://MonteCook//dist//lib//CupomFiscal.jasper";
     //   map.put("idSessao", idSessao);
   //     String a = String.valueOf(cbIdMensagem.getSelectedItem());
  //      System.out.println(a);
  //      System.out.println(idSessao);
   //     map.put("idMensagem", Integer.valueOf(a));
    //   JasperPrint jasperPrint =  JasperFillManager.fillReport(arquivoJasper, map, conn.conn);
               JasperPrint jasperPrint =  JasperFillManager.fillReport(arquivoJasper, parameters, jrRS);
        //Vizualiza
JasperViewer.viewReport(jasperPrint,false);

//Imprime printReport(endereco\relatorio,false);
//JasperPrintManager.printReport("CupomFiscal.jrprint",false);
} catch(Exception e){
JOptionPane.showMessageDialog(null,"Relatorio nao pode ser exibido, Erro "+e,"Mensagem", 0);
e.printStackTrace();
}

Acima está o trecho que uso

Criado 20 de junho de 2009
Ultima resposta 22 de jun. de 2009
Respostas 2
Participantes 2