Problemas com Insert em banco(RESOLVIDO)

Estou com problemas para inserir dados no meu banco e não sei que erro pode ser, gostaria de saber se minha CONNECTION FACTORY, está correta pois ela nunca mostra erro…

public class ConnectionFactory {
public static Connection getConnection() throws SQLException {
        Connection con = null;
        try {
            Class.forName("com.mysql.jdbc.Driver");
            con = DriverManager.getConnection("jdbc:mysql://localhost/webagenda", "root","xxx");
        } catch (ClassNotFoundException ex) {
            System.out.println("erro: " + ex);
            JOptionPane.showMessageDialog(null,"Ocorreu um erro ao tentar se conectar com o banco");
        }
        return con;
    }

}

E o meu metodo DAO

public class ContatoDao {
    
public void CadastraContato(Contato contato) throws SQLException {

    String sql = "insert into contatos (`nomeguerra`, `nome`, `contato_setor`, `filial`, `cgc`, `uf`, `cidade`, `bairro`, `logradouro`, `cep`, `tel1`, `tel2`, `tel3`)" +
            " values ('?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?');";
        Connection con = ConnectionFactory.getConnection();
        PreparedStatement pstmt = con.prepareStatement(sql);


        pstmt.setString(1,contato.getNomeguerra());
        pstmt.setString(2, contato.getNome());
        pstmt.setString(3,contato.getSetor());
        pstmt.setString(4,contato.getFilial());
        pstmt.setInt(5, contato.getCgc());
        pstmt.setString(6, contato.getUf());
        pstmt.setString(7, contato.getCidade());
        pstmt.setString(8,contato.getBairro());
        pstmt.setString(9, contato.getLogradouro());
        pstmt.setInt(10,contato.getTelefone1());
        pstmt.setInt(11,contato.getTelefone2());
        pstmt.setInt(12,contato.getTelefone3());
        pstmt.execute();

    }
}

qual erro ele apresenta fera???

Não sei se faz diferença, mas tire as aspas simples dos nomes dos campos na query…

e posta o erro q ta dando. =)

pq esta botando aspas simples?
nos atributos?

o problema é esse não tem erro nenhum, mas não inseri no banco

você ta vendo que voce tem alguns campos do tipo INT??
e no values vc ta colocando aspas.
tire as aspas dos campos do tipo INT

public class ContatoDao {
    
public void CadastraContato(Contato contato) throws SQLException {

    String sql = "insert into contatos (`nomeguerra`, `nome`, `contato_setor`, `filial`, `cgc`, `uf`, `cidade`, `bairro`, `logradouro`, `cep`, `tel1`, `tel2`, `tel3`)" +
            " values ('?', '?', '?', '?', ?, '?', '?', '?', '?', '?', ?, ?, ?);";
        Connection con = ConnectionFactory.getConnection();
        PreparedStatement pstmt = con.prepareStatement(sql);


        pstmt.setString(1,contato.getNomeguerra());
        pstmt.setString(2, contato.getNome());
        pstmt.setString(3,contato.getSetor());
        pstmt.setString(4,contato.getFilial());
        pstmt.setInt(5, contato.getCgc());
        pstmt.setString(6, contato.getUf());
        pstmt.setString(7, contato.getCidade());
        pstmt.setString(8,contato.getBairro());
        pstmt.setString(9, contato.getLogradouro());
        pstmt.setInt(10,contato.getTelefone1());
        pstmt.setInt(11,contato.getTelefone2());
        pstmt.setInt(12,contato.getTelefone3());
        pstmt.execute();

    }
}

outra coisa que percebi é que você tem 13 campos e esta setando apenas 12
flw
abrçs

Retirei as aspas e a String ficou assim:

 String sql = "insert into contatos (nomeguerra, nome, contato_setor, filial, cgc, uf, cidade, bairro, logradouro, cep, tel1, tel2, tel3)" +
            " values ('?', '?', '?', '?', ?, '?', '?', '?', '?', ?, ?, ?, ?);";

1-acho que não tem problema não passar o ultimo campo é o telefone 3

2- meu log do apache retornou isso:

WARNING: Unable to find component with ID telefone in view.
22/12/2009 11:07:20 backbean.Contatobackbean salvar
SEVERE: null
java.sql.SQLException: Parameter index out of range (6 > number of parameters, which is 5).
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1055)
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:926)
        at com.mysql.jdbc.PreparedStatement.checkBounds(PreparedStatement.java:3288)
        at com.mysql.jdbc.PreparedStatement.setInternal(PreparedStatement.java:3272)
        at com.mysql.jdbc.PreparedStatement.setString(PreparedStatement.java:4108)
        at dao.ContatoDao.CadastraContato(ContatoDao.java:33)
        at backbean.Contatobackbean.salvar(Contatobackbean.java:42)
        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 org.apache.el.parser.AstValue.invoke(AstValue.java:172)
        at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276)
        at org.apache.jasper.el.JspMethodExpression.invoke(JspMethodExpression.java:68)
        at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:77)
        at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:91)
        at javax.faces.component.UICommand.broadcast(UICommand.java:383)
        at org.ajax4jsf.component.AjaxViewRoot.processEvents(AjaxViewRoot.java:321)
        at org.ajax4jsf.component.AjaxViewRoot.broadcastEvents(AjaxViewRoot.java:296)
        at org.ajax4jsf.component.AjaxViewRoot.processPhase(AjaxViewRoot.java:253)
        at org.ajax4jsf.component.AjaxViewRoot.processApplication(AjaxViewRoot.java:466)
        at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:97)
        at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
        at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117)
        at javax.faces.webapp.FacesServlet.service(FacesServlet.java:244)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)
        at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
        at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:390)
        at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:517)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
        at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
        at java.lang.Thread.run(Thread.java:619)

java.sql.SQLException: Parameter index out of range (6 > number of parameters, which is 5).

vc ta colocando telefone no lugar de cep… coloca um getCep no lugar certo =)

Experimenta tirar as aspas simples. e cole seu codigo que insere as informaçoes no banco…

desculpa …completando…cole sua classe que insere as informaçoes no banco aki no forum…

O meu metodo esta assim…

[code]
public class ContatoDao {

public void CadastraContato(Contato contato) throws SQLException {

String sql = "insert into contatos (nomeguerra, nome, contato_setor, filial, cgc, uf, cidade, bairro, logradouro, cep, tel1, tel2, tel3)" +
        " values ('?', '?', '?', '?', ?, '?', '?', '?', '?', ?, ?, ?, ?);";
    Connection con = ConnectionFactory.getConnection();
    PreparedStatement pstmt = con.prepareStatement(sql);


    pstmt.setString(1,contato.getNomeguerra());
    pstmt.setString(2, contato.getNome());
    pstmt.setString(3,contato.getSetor());
    pstmt.setString(4,contato.getFilial());
    pstmt.setInt(5, contato.getCgc());
    pstmt.setString(6, contato.getUf());
    pstmt.setString(7, contato.getCidade());
    pstmt.setString(8,contato.getBairro());
    pstmt.setString(9, contato.getLogradouro());
    pstmt.setInt(10, contato.getCep());
    pstmt.setInt(11,contato.getTelefone1());
    pstmt.setInt(12,contato.getTelefone2());
    pstmt.setInt(13,contato.getTelefone3());
    pstmt.execute();

}

}[/code]

agora notei que eu inseri um dado mesmo na mão la no banco e meu id que é auto increment foi logo para 8 será se tem algo haver??
ah…
meu metodo para salvar é esse:

public String salvar() { try { contato1.CadastraContato(contato); contato = new Contato(); } catch (SQLException ex) { Logger.getLogger(Contatobackbean.class.getName()).log(Level.SEVERE, null, ex); }return "salvar"; }

Tire o ; do final do insert.

String sql = "insert into contatos (nomeguerra, nome, contato_setor, filial, cgc, uf, cidade, bairro, logradouro, cep, tel1, tel2, tel3)" +  
            " values ('?', '?', '?', '?', ?, '?', '?', '?', '?', ?, ?, ?, ?);";  
String sql = "insert into contatos (nomeguerra, nome, contato_setor, filial, cgc, uf, cidade, bairro, logradouro, cep, tel1, tel2, tel3)" +  
            " values ('?', '?', '?', '?', ?, '?', '?', '?', '?', ?, ?, ?, ?)";

Coloque um sysout

pstmt.setInt(13,contato.getTelefone3());  
System.out.println(sql); //aqui
pstmt.execute();  

e veja se o que a query manda escrito pro BD faz sentido…

ok…

Você fez a conexão com o banco, e passou os parâmetros do BD tbm…mas vc verificou seus métodos GGAS (getters e Setters) ? estão todos corretos?
sua classe de inserir ao banco com o método main está correto?

Em um PreparedStatement você não usa aspas simples (nem no nome dos campos, nem na interrogação; se você fizer isso ele considera como sendo uma String e dá esse erro).

Fiz o que foi sugeridos nos 2 posts acima mas nada e como não me retornou nenhuma msg depois de

 pstmt.setInt(13,contato.getTelefone3());
        System.out.println(sql); //aqui

acho que não esta entrando la

Como está seu método nesse momento?

A minha pagina de inserçaõ é na verdade um arquivo.jsp

que tem esse metodo:

public String salvar() { try { contato1.CadastraContato(contato); contato = new Contato(); } catch (SQLException ex) { Logger.getLogger(Contatobackbean.class.getName()).log(Level.SEVERE, null, ex); }return "salvar"; }

o meu DAO está assim tenho certeza que assim funfa:

public class ContatoDao {
    
public void CadastraContato(Contato contato) throws SQLException {

    String sql = "insert into contatos (nomeguerra, nome, contato_setor, filial, cgc, uf, cidade, bairro, logradouro, cep, tel1, tel2, tel3)" +
            " values ('?', '?', '?', '?', ?, '?', '?', '?', '?', ?, ?, ?, ?)";
        Connection con = ConnectionFactory.getConnection();
        PreparedStatement pstmt = con.prepareStatement(sql);


        pstmt.setString(1,contato.getNomeguerra());
        pstmt.setString(2, contato.getNome());
        pstmt.setString(3,contato.getSetor());
        pstmt.setString(4,contato.getFilial());
        pstmt.setInt(5, contato.getCgc());
        pstmt.setString(6, contato.getUf());
        pstmt.setString(7, contato.getCidade());
        pstmt.setString(8,contato.getBairro());
        pstmt.setString(9, contato.getLogradouro());
        pstmt.setInt(10, contato.getCep());
        pstmt.setInt(11,contato.getTelefone1());
        pstmt.setInt(12,contato.getTelefone2());
        pstmt.setInt(13,contato.getTelefone3());
        System.out.println(sql); //aqui

        pstmt.execute();

    }
}