Consulta com data com erro

3 respostas
asandro1501

Boa tarde pessoal

Estou tentando fazer uma consulta num bean que com parâmetro do tipo data que mando da página JSF. Ele me acusa uma passagem de valor nula mas não sei o que está errado.

método da lista
public List<Atendimento> getAtendimentos() throws SQLException {
        List<Atendimento> atendimentos = new ArrayList<Atendimento>();
        String sql = "select * from atendimento where dataAtendimento ?";
        PreparedStatement stmt;

        try {
            stmt = this.conexao.prepareStatement(sql);
            stmt.setDate(1, new java.sql.Date(atendimento.getDataAtendimento().getTime()));

            ResultSet rs = stmt.executeQuery(sql);
            System.out.println(rs);
            while (rs.next()) {
                Atendimento atend = new Atendimento();

                int idAtend = rs.getInt("idAtend");
                int tipoAtendimento = rs.getInt("tipoAtendimento");
                int codpaciente = rs.getInt("codpaciente");
                int codmedico = rs.getInt("idmedico");
                int idpsf = rs.getInt("idpsf");
                Date dataAtendimento = rs.getDate("dataAtendimento");
                int idsituacao = rs.getInt("idsituacaoatendimento");

                atend.setIdAtend(idAtend);
                atend.setTipoatendimento(tipoAtendimento);
                atend.setCodpaciente(codpaciente);
                atend.setIdmedico(codmedico);
                atend.setIdpsf(idpsf);
                atend.setDataAtendimento(dataAtendimento);
                atend.setIdsituacaoatendimento(idsituacao);

                atendimentos.add(atend);
            }
            rs.close();
            stmt.close();
        } catch (SQLException ex) {
            Logger.getLogger(AtendimentoBean.class.getName()).log(Level.SEVERE, null, ex);
        }
        return atendimentos;
    }
página jsf
<h:form>
            <p:panel header="Atendimentos por Dia" >
                <h:outputText value="Data"/>
                <p:calendar value="#{atendimentoBean.atendimento.dataAtendimento}" pattern="dd/MM/yyyy"/>                
                 <h:commandButton value="Filtrar" action="#{atendimentoBean.atendimentos}"/>

                 <p:dataTable  value="#{atendimentoBean.atendimentos}" id="listaatendimentos" var="atend"  selection="#{atendimentoBean.atendimento}"
                              paginator="true" paginatorPosition="bottom" rows="20"  height="400" onselectComplete="dialog.show()"
                              selectionMode="single" update="panel" paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink}
                              {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"  rowsPerPageTemplate="5,10,15,20,25"
                              emptyMessage="Sem registros">

                    <p:column>
                        <f:facet name="header">
                            <h:outputText value="Atendimento" />
                        </f:facet>
                        <h:outputText value="#{atend.idAtend}" />
                    </p:column>

                    <p:column>
                        <f:facet name="header">
                            <h:outputText value="Tipo Atendimento" />
                        </f:facet>
                        <h:outputText value="#{atend.tipoatendimento}" />
                    </p:column>

                   
                    <p:column>
                        <h:commandButton value="Excluir" action="DeletaFuncionario.jsf"/>
                        <h:commandButton value="Alterar" action="AlteraFuncionario.jsf"/>

                    </p:column>

                </p:dataTable>

            </p:panel>

        </h:form>

Alguém pode me dar uma ajuda pra resolver isso?

Obrigado

3 Respostas

Tiburcio_Mancha
String sql = "select * from atendimento where dataAtendimento ?";

Olha isso, qual a cláusula do select?é =, <, >…

acho que o que vc quer é isso:

String sql = "select * from atendimento where dataAtendimento= ?";
D

Se não for o que o Tiburcio falou que provavelmente é isso

pode ser pq no java a data é capturada como “D/M/Y”
e no sql é "Y/M/D se não me engano

asandro1501

Olá pessoal,

Fiz as alterações recomendadas mas não funcionou.

Tiburcio, fiz a consulta sem o sinal de igual porque tenho outras que funcionam desta forma. Mesmo assim fiz a alteração sugerida mas continua com o mesmo erro.

Daniel, troquei o pattern do component que é o formato retornado na consulta feita no workbench. Também não funcionou.

Cometi um erro antes em não mostrar o erro retornado.

No console do glassfish retorna o seguinte erro:
SEVERE: Error Rendering View[/AtendimentoDia.xhtml]
javax.el.ELException: /AtendimentoDia.xhtml @23,60 value="#{atendimentoBean.atendimentos}": java.lang.NullPointerException
        at com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:107)
        at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:190)
        at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:178)
        at javax.faces.component.UIData.getValue(UIData.java:554)
        at javax.faces.component.UIData.getDataModel(UIData.java:1248)
        at javax.faces.component.UIData.getRowCount(UIData.java:339)
        at org.primefaces.component.datatable.DataTableRenderer.encodeTbody(DataTableRenderer.java:401)
        at org.primefaces.component.datatable.DataTableRenderer.encodeMarkup(DataTableRenderer.java:164)
        at org.primefaces.component.datatable.DataTableRenderer.encodeEnd(DataTableRenderer.java:80)
        at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:878)
        at org.primefaces.renderkit.CoreRenderer.renderChild(CoreRenderer.java:59)
        at org.primefaces.renderkit.CoreRenderer.renderChildren(CoreRenderer.java:43)
        at org.primefaces.component.panel.PanelRenderer.encodeContent(PanelRenderer.java:220)
        at org.primefaces.component.panel.PanelRenderer.encodeMarkup(PanelRenderer.java:144)
        at org.primefaces.component.panel.PanelRenderer.encodeEnd(PanelRenderer.java:74)
        at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:878)
        at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1620)
        at javax.faces.render.Renderer.encodeChildren(Renderer.java:168)
        at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:848)
        at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1613)
        at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1616)
        at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1616)
        at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1616)
        at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:380)
        at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:126)
        at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:127)
        at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
        at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
        at javax.faces.webapp.FacesServlet.service(FacesServlet.java:313)
        at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1523)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:279)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:188)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:641)
        at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:97)
        at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:85)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:185)
        at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:325)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:226)
        at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:165)
        at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:791)
        at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:693)
        at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:954)
        at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:170)
        at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:135)
        at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:102)
        at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:88)
        at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:76)
        at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:53)
        at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:57)
        at com.sun.grizzly.ContextTask.run(ContextTask.java:69)
        at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:330)
        at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:309)
        at java.lang.Thread.run(Thread.java:619)
Caused by: java.lang.NullPointerException
        at bean.AtendimentoBean.getAtendimentos(AtendimentoBean.java:69)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at javax.el.BeanELResolver.getValue(BeanELResolver.java:302)
        at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:175)
        at com.sun.faces.el.FacesCompositeELResolver.getValue(FacesCompositeELResolver.java:72)
        at com.sun.el.parser.AstValue.getValue(AstValue.java:116)
        at com.sun.el.parser.AstValue.getValue(AstValue.java:163)
        at com.sun.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:219)
        at com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:102)
        ... 52 more
Já na página retorna um erro que aponta para a seguinte linha do bean
stmt.setDate(1, new java.sql.Date(atendimento.getDataAtendimento().getTime()));
O erro é o seguinte:
java.lang.NullPointerException
	at bean.AtendimentoBean.getAtendimentos(AtendimentoBean.java:69)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at javax.el.BeanELResolver.getValue(BeanELResolver.java:302)
	at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:175)
	at com.sun.faces.el.FacesCompositeELResolver.getValue(FacesCompositeELResolver.java:72)
	at com.sun.el.parser.AstValue.getValue(AstValue.java:116)
	at com.sun.el.parser.AstValue.getValue(AstValue.java:163)
	at com.sun.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:219)
	at com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:102)
	at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:190)
	at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:178)
	at javax.faces.component.UIData.getValue(UIData.java:554)
	at javax.faces.component.UIData.getDataModel(UIData.java:1248)
	at javax.faces.component.UIData.getRowCount(UIData.java:339)
	at org.primefaces.component.datatable.DataTableRenderer.encodeTbody(DataTableRenderer.java:401)
	at org.primefaces.component.datatable.DataTableRenderer.encodeMarkup(DataTableRenderer.java:164)
	at org.primefaces.component.datatable.DataTableRenderer.encodeEnd(DataTableRenderer.java:80)
	at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:878)
	at org.primefaces.renderkit.CoreRenderer.renderChild(CoreRenderer.java:59)
	at org.primefaces.renderkit.CoreRenderer.renderChildren(CoreRenderer.java:43)
	at org.primefaces.component.panel.PanelRenderer.encodeContent(PanelRenderer.java:220)
	at org.primefaces.component.panel.PanelRenderer.encodeMarkup(PanelRenderer.java:144)
	at org.primefaces.component.panel.PanelRenderer.encodeEnd(PanelRenderer.java:74)
	at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:878)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1620)
	at javax.faces.render.Renderer.encodeChildren(Renderer.java:168)
	at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:848)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1613)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1616)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1616)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1616)
	at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:380)
	at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:126)
	at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:127)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
	at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:313)
	at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1523)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:279)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:188)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:641)
	at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:97)
	at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:85)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:185)
	at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:325)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:226)
	at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:165)
	at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:791)
	at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:693)
	at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:954)
	at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:170)
	at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:135)
	at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:102)
	at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:88)
	at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:76)
	at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:53)
	at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:57)
	at com.sun.grizzly.ContextTask.run(ContextTask.java:69)
	at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:330)
	at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:309)
	at java.lang.Thread.run(Thread.java:619)

Será algum erro na maneira como estou informando a data para o código sql?

Obrigado

Criado 17 de dezembro de 2010
Ultima resposta 17 de dez. de 2010
Respostas 3
Participantes 3