Falha ao converter para representação interna

Amigos,

estou com esse erro abaixo:

java.sql.SQLException: Falha ao converter para representação interna at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:114) at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:156) at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:219) at oracle.jdbc.driver.OracleStatement.getLongValue(OracleStatement.java:3022) at oracle.jdbc.driver.OracleStatement.getIntValue(OracleStatement.java:2975) at oracle.jdbc.driver.OracleResultSetImpl.getInt(OracleResultSetImpl.java:309) at oracle.jdbc.driver.OracleResultSet.getInt(OracleResultSet.java:1354) at br.com.odontoprev.implantacao.DAO.GrupoDAO.listarGrupo(GrupoDAO.java:161) at br.com.odontoprev.implantacao.bo.GerenciadorGrupo.listarGrupo(GerenciadorGrupo.java:10) at br.com.odontoprev.implantacao.actions.ClienteAction.abrirCliente(ClienteAction.java:80) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:280) at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:216) at br.com.odontoprev.implantacao.actions.MainAction.execute(MainAction.java:23) at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:480) at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274) at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1420) at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:502) at javax.servlet.http.HttpServlet.service(HttpServlet.java:690) at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:228) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:216) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:634) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:445) at java.lang.Thread.run(Unknown Source)
e o metodo que esta falhando é esse:

[code]
public static ArrayList listarGrupo() throws SQLException {
PreparedStatement ps = null;
ResultSet rs = null;
String sql = null;
ArrayList listaGrupo = null;
Connection conn = null;
try {
conn = DBConnection.getConnection();
sql = “select cd_empresa_grsoc,upper(nm_fantasia_empresa)nm_fantasia_empresa from tbod_empresa where cd_empresa in (”+
"select distinct cd_empresa_grsoc from tbod_empresa) order by cd_empresa_grsoc ";
ps = conn.prepareStatement(sql);
rs = ps.executeQuery();

		listaGrupo = new ArrayList();

		while (rs.next()) {
			Parametro p = new Parametro();
			p.setCodigo(rs.getInt("cd_empresa_grsoc"));
			p.setDescricao(rs.getString("cd_empresa_grsoc")+'-'+rs.getString("nm_fantasia_empresa"));
			listaGrupo.add(p);
		}
	} catch (SQLException e1) {
		e1.printStackTrace();
	} finally {
		if (conn != null) {
			conn.close();
		}
		if (ps != null) {
			ps.close();
		}
		if (rs != null) {
			rs.close();
		}
	}
	return listaGrupo;[/code]

o tipo de dados da coluna cd_empresa_grsoc é char e o setcodigo é int…o que devo fazer?

[quote=Rodrigomazza]
o tipo de dados da coluna cd_empresa_grsoc é char e o setcodigo é int…o que devo fazer?[/quote]
Tem mesmo certeza que perguntou isso?
Obtenha o valor como String e faça o parse para Integer…

Um detalhe: Essa consulta está assim mesmo?

sql = "select cd_empresa_grsoc,upper(nm_fantasia_empresa)nm_fantasia_empresa from tbod_empresa where cd_empresa in ("+ select distinct cd_empresa_grsoc from tbod_empresa) order by cd_empresa_grsoc ";
Roda?

Outro detalhe, aqui a exceção se refere à linha 161. O que tem nesta linha?

at br.com.odontoprev.implantacao.DAO.GrupoDAO.listarGrupo(GrupoDAO.java:161)

kkkkkkk

por incrivel que parece, sim roda…

então tentei fazer um parse int mas olha o que acontece:

	while (rs.next()) {
				Parametro p = new Parametro();
				p.setCodigo(rs.getInt(Integer.parseInt("cd_empresa_grsoc")));
				p.setDescricao(rs.getString("cd_empresa_grsoc")+'-'+rs.getString("nm_fantasia_empresa"));
				listaGrupo.add(p);
			}

olha o erro que estora:


java.lang.NumberFormatException: For input string: "cd_empresa_grsoc"
	at java.lang.NumberFormatException.forInputString(Unknown Source)
	at java.lang.Integer.parseInt(Unknown Source)
	at java.lang.Integer.parseInt(Unknown Source)
	at br.com.odontoprev.implantacao.DAO.GrupoDAO.listarGrupo(GrupoDAO.java:161)
	at br.com.odontoprev.implantacao.bo.GerenciadorGrupo.listarGrupo(GerenciadorGrupo.java:10)
	at br.com.odontoprev.implantacao.actions.ClienteAction.abrirCliente(ClienteAction.java:80)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:280)
	at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:216)
	at br.com.odontoprev.implantacao.actions.MainAction.execute(MainAction.java:23)
	at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:480)
	at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)
	at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1420)
	at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:502)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:228)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:216)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:634)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:445)
	at java.lang.Thread.run(Unknown Source)

Vc deve ter reparado que ele cria um objeto p = new parametro da uma olhada:

[code]
public class Parametro {
public Parametro() { super(); }
protected int cd_parametro;
protected int cd_outro;
protected String ds_parametro;
protected String ds_outro;
protected double vl;

public double getVl() {
	return vl;
}
public void setVl(double vl) {
	this.vl = vl;
}
public void setCdOutro(int n){
	cd_outro = n;
}
public void setDsOutro(String n){
	ds_outro = n;
}
public void setCodigo(int n) {
	cd_parametro = n;
}
public void setDescricao(String a) {
	ds_parametro = a;
	if (ds_parametro != "" || ds_parametro != null) {
		ds_parametro = ds_parametro.toUpperCase();	
	}
	
}
public int getCodigo(){
	return cd_parametro;
}
public int getOutro(){
	return cd_parametro;
}
public String getDescricao(){
	return ds_parametro;
}
public String getDsOutro(){
	return ds_outro;
}

}[/code]

[quote=Rodrigomazza]kkkkkkk

por incrivel que parece, sim roda…

então tentei fazer um parse int mas olha o que acontece:

while (rs.next()) { Parametro p = new Parametro(); p.setCodigo(rs.getInt(Integer.parseInt("cd_empresa_grsoc"))); p.setDescricao(rs.getString("cd_empresa_grsoc")+'-'+rs.getString("nm_fantasia_empresa")); listaGrupo.add(p); } [/quote]
As coisas dão errado quando alguém faz algo errado.
Releia o que eu escrevi, com atenção e siga os passos um a um.

Opa desculpe…

vc disse para eu fazer isso?

Parametro p = new Parametro();
				String parse = rs.getString("cd_empresa_grsoc");
				p.setCodigo(Integer.parseInt(parse));
				p.setDescricao(rs.getString("cd_empresa_grsoc")+'-'+rs.getString("nm_fantasia_empresa"));
				listaGrupo.add(p);

Sim.
Isso deve ter funcionado, a não ser que, o conteúdo existente na coluna cd_empresa_grsoc seja diferente de um número.

Então agora esta dando erro em um item especifico do quando:

GRAVE: Servlet.service() for servlet action threw exception
java.lang.NumberFormatException: For input string: "45747 "
	at java.lang.NumberFormatException.forInputString(Unknown Source)
	at java.lang.Integer.parseInt(Unknown Source)
	at java.lang.Integer.parseInt(Unknown Source)
	at br.com.odontoprev.implantacao.DAO.GrupoDAO.listarGrupo(GrupoDAO.java:162)
	at br.com.odontoprev.implantacao.bo.GerenciadorGrupo.listarGrupo(GerenciadorGrupo.java:10)
	at br.com.odontoprev.implantacao.actions.ClienteAction.abrirCliente(ClienteAction.java:80)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:280)
	at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:216)
	at br.com.odontoprev.implantacao.actions.MainAction.execute(MainAction.java:23)
	at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:480)
	at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)
	at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1420)
	at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:502)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:228)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:216)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:634)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:445)
	at java.lang.Thread.run(Unknown Source)

eu acessei o banco e não sei se pode ser isso mas este dado esta com espaço apos o ultimo digito…

A classe String permite que você elimine espaços desnecessários utilizando o método trim().
Talvez

Integer.parseInt(parse.trim());

Resolva…

foi o que fiz…mas usei o trim no select.

obrigado pela paciencia…

Ah, entendi.
É que não sei se todo banco de dados suporta trim, por isso sugiro deixar a cargo de quem conheço, no caso, java.

Engraçado você agradecer a paciência. O pessoal normalmente reclama que eu sou boçal e tals.
Como você mostrou boa vontade e humildade, eu segui como achei que deveria. O mérito é teu, afinal, ninguém nasce sabendo e, perguntar, é fundamental.

[quote=Rodrigomazza]foi o que fiz…mas usei o trim no select.

obrigado pela paciencia…[/quote]

Rodrigomazza, não fique com receio de perguntar…