Problemas com tipos

4 respostas
V

Bom dia a todos,

Estou fazendo uma query que é um update e na minha clausula “where” passo um “código”, no tabela esse código é do tipo “int”.
Na minha Action (Servlet) tenho que receber esse código, mas ele esta vindo como “null” com o seguinte erro abaixo:

java.lang.NumberFormatException: null
	java.lang.Integer.parseInt(Unknown Source)
	java.lang.Integer.parseInt(Unknown Source)

Segue uma parte do meu código do DAO onde pego esse código:

pstm = con.prepareStatement(" UPDATE tblrede SET " +
			      								" desc_rede = ?, " +
			      								" uf = ?, " +
			      								" cidade = ?, " +
			      								" fone1 = ?, " +
			      								" contato1 = ?, " +
			      								" email1 = ?, " +
			      								" fone2 = ?, " +
			      								" contato2 = ?, " +
			      								" email2 = ?, " +
			      								" razao = ?, " +
			      								" insc_est = ?, " +
			      								" ender = ?, " +
			      								" cnpj = ?, " +
			      								" banco = ?, " +
			      								" agencia = ?, " +
			      								" conta = ?, " +
			      								" cadfor = ?, " +
			      								" contrato_social = ?, " +
			      								" ender_prom = ?, " +
			      								" cod_gr = ?, " +
			      								" cod_gc = ?, " +
			      								" is_ativo = ?, " +
			      								" data_status = ?, " +
			      								" obs = ? " +	      								
			      								" WHERE cod_rede = ?");

pstm.setInt(25,Integer.parseInt(redeForm.getCodigo()));

Segue uma parte do código da Action.

cadRedeVO.setCodigo(Integer.parseInt(redeForm.getCodigo()));

Agradeço desde já a ajuda de vcs,
Vitor

4 Respostas

H

Esse erro está acontecendo porque você está tentando fazer um parse em um valor null

cadRedeVO.setCodigo(Integer.parseInt(redeForm.getCodigo()));

esse redeForm.getCodigo() é do tipo String?

de uma verificada… se esse valor não está vindo null

V

haamilton,

Realmente ele esta vindo “null”, mas quando coloco um código fixo na query, ele acontece a mesma coisa, isso q não consigo entender.
Com certeza eu devo estar dando algum vacilo, mas confesso q ainda não consegui enxergar.

O redeForm.getCodigo() é do tipo String, mas o q vem do update é do tipo “int”, provavelmente o problema deve estar aí, mas não consegui resolver ainda.
No meu Bean o codigo é do tipo String e no meu Form é do tipo String.

Mais uma vez obrigado.

otaviofcs

você deve estar colocando um valor fixo na query mas não deve ter suprimido/comentado a linha pmst.setInt. Por isso o erro vai continuar ocorrendo. Você pode fazer 3 coisas:

  1. Deixar o método lançar um erro, pois, afinal, um erro no preenchimento das variáveis realmente aconteceu;
  2. Lançar um erro, mas fazer com que o mesmo seja tratado. Ou seja, lançar um erro que realmente dê o motivo do erro;
  3. impedir a variável de ser nula (zerando a mesma se for um nulo).
V

Otavio,

Fiz o comentário da linha que vc falou do pmst.setInt, mas mesmo assim continua dando o seguinte erro abaixo:

exception 

javax.servlet.ServletException: null
	org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:286)
	org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
	org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)


root cause 

java.lang.NumberFormatException: null
	java.lang.Integer.parseInt(Unknown Source)
	java.lang.Integer.parseInt(Unknown Source)
	raa.ebt.action.CadRedeAction.executar(Unknown Source)
	sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	java.lang.reflect.Method.invoke(Unknown Source)
	org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:269)
	org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:170)
	org.apache.struts.chain.commands.servlet.ExecuteAction.execute(ExecuteAction.java:58)
	org.apache.struts.chain.commands.AbstractExecuteAction.execute(AbstractExecuteAction.java:67)
	org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
	org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
	org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:304)
	org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
	org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
	org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
	org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

Não estou conseguindo impedir a variável de ser nula.
Devo estar dando algum vacilo que ainda não enxerguei.

Mais uma vez obrigado.

Criado 28 de março de 2008
Ultima resposta 28 de mar. de 2008
Respostas 4
Participantes 3