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…