Estranho NullPointerException quando dou um rs.getString()

5 respostas
P

public ArrayList consultaCod(int uni, int emp, int fam, int dep)
throws SQLException, NullPointerException{

Connection con = null;
	PreparedStatement ps = null;
	ResultSet rs = null;
	
	ArrayList benefList = new ArrayList();
	try {
		con = ServiceLocator.getInstance().getDataSource().getConnection();
		
	
		ps = con.prepareStatement("SELECT NM_BENEFICIARIO, NR_RG FROM tb_pl_benef"
				+ " WHERE CD_UNIMED ="+ uni + " and CD_EMPRESA =" + emp +" and CD_FAMILIA =" + fam 
				+" and CD_DEPENDENCIA =" + dep);
								
			rs = ps.executeQuery();

		while (rs.next()) {
			
			TPlBenef tplBenefList = new TPlBenef();
			tplBenefList.setCd_unimed(uni);
			tplBenefList.setCd_empresa(emp);		
			tplBenefList.setCd_familia(fam);
			tplBenefList.setCd_dependencia(dep);
			tplBenefList.setNm_beneficiario(rs.getString(1));
			//tplbenef.setNr_rg( (rs.getString(2) != null) ? rs.getString(2) : ""); 
		//              ------>	
                                                            tplbenef.setNr_rg(rs.getString(2));
			tplBenefList.setStatus("Aguardando Liberação");
		benefList.add(tplBenefList);
		} 
		
	}	finally {
		System.out.println("Estou no finally");
		rs.close();
		ps.close();
		con.close();
	}
	return benefList;
}

Quando eu dou o getString(2), que seria para puxar o NR_RG ele dá o seguinte erro (comentando essa linha funciona perfeito).
O estranho é que quando faço o comando direto no banco funciona perfeito, já dei um System.out para ver se o select não tem nenhuma variavel null, está tudo ok, só no campo NR_RG que dá errado. O tipo do campo no banco é char(15).

Obrigado

2004-12-17 16:24:21,140 INFO  [STDOUT] class java.lang.NullPointerException

2004-12-17 16:24:21,140 INFO  [STDOUT] null

2004-12-17 16:24:21,140 ERROR [STDERR] java.lang.NullPointerException

2004-12-17 16:24:21,140 ERROR [STDERR] 	at br.com.unimedsantos.signus.entidade.EPlBenef.consultaCod(Unknown Source)

2004-12-17 16:24:21,140 ERROR [STDERR] 	at br.com.unimedsantos.signus.planilha.Actions.ConsultaAction.execute(Unknown Source)

2004-12-17 16:24:21,140 ERROR [STDERR] 	at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:421)

2004-12-17 16:24:21,140 ERROR [STDERR] 	at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:226)

2004-12-17 16:24:21,140 ERROR [STDERR] 	at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1164)

2004-12-17 16:24:21,140 ERROR [STDERR] 	at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:415)

2004-12-17 16:24:21,140 ERROR [STDERR] 	at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)

2004-12-17 16:24:21,140 ERROR [STDERR] 	at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)

2004-12-17 16:24:21,140 ERROR [STDERR] 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)

2004-12-17 16:24:21,140 ERROR [STDERR] 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)

2004-12-17 16:24:21,140 ERROR [STDERR] 	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:256)

2004-12-17 16:24:21,140 ERROR [STDERR] 	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)

2004-12-17 16:24:21,140 ERROR [STDERR] 	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)

2004-12-17 16:24:21,140 ERROR [STDERR] 	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)

2004-12-17 16:24:21,140 ERROR [STDERR] 	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)

2004-12-17 16:24:21,140 ERROR [STDERR] 	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)

2004-12-17 16:24:21,140 ERROR [STDERR] 	at org.jboss.web.tomcat.security.JBossSecurityMgrRealm.invoke(JBossSecurityMgrRealm.java:220)

2004-12-17 16:24:21,140 ERROR [STDERR] 	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)

2004-12-17 16:24:21,140 ERROR [STDERR] 	at org.apache.catalina.valves.CertificatesValve.invoke(CertificatesValve.java:246)

2004-12-17 16:24:21,140 ERROR [STDERR] 	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)

2004-12-17 16:24:21,140 ERROR [STDERR] 	at org.jboss.web.tomcat.tc4.statistics.ContainerStatsValve.invoke(ContainerStatsValve.java:76)

2004-12-17 16:24:21,140 ERROR [STDERR] 	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)

2004-12-17 16:24:21,140 ERROR [STDERR] 	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)

2004-12-17 16:24:21,140 ERROR [STDERR] 	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)

2004-12-17 16:24:21,140 ERROR [STDERR] 	at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2417)

2004-12-17 16:24:21,140 ERROR [STDERR] 	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)

2004-12-17 16:24:21,140 ERROR [STDERR] 	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)

2004-12-17 16:24:21,140 ERROR [STDERR] 	at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:171)

2004-12-17 16:24:21,140 ERROR [STDERR] 	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)

2004-12-17 16:24:21,140 ERROR [STDERR] 	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)

2004-12-17 16:24:21,190 ERROR [STDERR] 	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)

2004-12-17 16:24:21,190 ERROR [STDERR] 	at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:65)

2004-12-17 16:24:21,190 ERROR [STDERR] 	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)

2004-12-17 16:24:21,190 ERROR [STDERR] 	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:577)

2004-12-17 16:24:21,190 ERROR [STDERR] 	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)

2004-12-17 16:24:21,190 ERROR [STDERR] 	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)

2004-12-17 16:24:21,190 ERROR [STDERR] 	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)

2004-12-17 16:24:21,190 ERROR [STDERR] 	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)

2004-12-17 16:24:21,190 ERROR [STDERR] 	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)

2004-12-17 16:24:21,190 ERROR [STDERR] 	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)

2004-12-17 16:24:21,190 ERROR [STDERR] 	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)

2004-12-17 16:24:21,190 ERROR [STDERR] 	at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:197)

2004-12-17 16:24:21,190 ERROR [STDERR] 	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:781)

2004-12-17 16:24:21,190 ERROR [STDERR] 	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:549)

2004-12-17 16:24:21,190 ERROR [STDERR] 	at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:605)

2004-12-17 16:24:21,190 ERROR [STDERR] 	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:677)

2004-12-17 16:24:21,190 ERROR [STDERR] 	at java.lang.Thread.run(Thread.java:534)

5 Respostas

R

assim, só para teste, tente setar assim:

realmente, é muito estranho… que banco vc está utilizando???

P

Eu já fiz isso, alias estava assim antes.
Estou usando oracle 8i.

Abracos…
:slight_smile:

A

Este campo é do tipo char?

P

Sim.
char(15)

G

E ae blz?

Comigo aconteceu algo parecido. Então eu fiz o seguinte, usei o rs.getString(num) apenas uma vez, jogando o retorno num atributo… no seu caso ficaria…

String campo = rs.getString(2);

tplbenef.setNr_rg( (campo != null) ? campo : “”);

Criado 17 de dezembro de 2004
Ultima resposta 18 de dez. de 2004
Respostas 5
Participantes 4