Salvar Cadastro no banco- JSF+ Richfaces

Na área + uma vez pessoal, abusando ai da ajuda da galera…É o seguinte, estou tentando fazer um cadastro de uma agenda, criei minha pagina de cadastro,seu backbean, meus beans e meu dao com o metodo para salvar e configurei meu Faces-config.(tecnicamente não falta nada); E isso funciona em partes, pois insiro os dados e mando salvar, e ele realmente testa se o metodo esta retornando “salvar” e como queria ele vai de Cadastro.jsp para a pagina Welcome.jsp(ver regra no Faces-config), MAS não salva no banco e nem retorna erro…

FACES-CONFIG

 <managed-bean>
        <managed-bean-name>cadastraContato</managed-bean-name>
        <managed-bean-class>backbean.Contatobackbean</managed-bean-class>
        <managed-bean-scope>session</managed-bean-scope>
    </managed-bean>
    
    <navigation-rule>
        <from-view-id>/Cadastro.jsp</from-view-id>
        <navigation-case>
            <from-outcome>salvar</from-outcome>
            <to-view-id>/welcomeJSF.jsp</to-view-id>
        </navigation-case>
    </navigation-rule>

MEU BACKBEAN:

public class Contatobackbean {


      private ContatoDao contato1 = new ContatoDao();
      private  Contato contato = new Contato();

    public Contato getContato() {
        return contato;
    }

    public void setContato(Contato contato) {
        this.contato = contato;
    }

    public ContatoDao getContato1() {
        return contato1;
    }

    public void setContato1(ContatoDao contato1) {
        this.contato1 = contato1;
    }
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";
       }

}

E O DAO

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

    String sql = "insert into contatos(nomeguerra,nome, contato_setor,filial,cgc,telefone1, telefone2,cgc)" +
                " 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.setInt(6,contato.getTelefone1());
        pstmt.setInt(7,contato.getTelefone2());
        pstmt.execute();

    }
}

Tu não tem um id nessa tua tabela :?:

Nao falta preencher algo mais nesse teu insert :?:

O meu id é auto increment, eu nem passo ele para o banco no meu cadastro, independente disso acho que era para funcionar…Quanto ao meu insert eu ACHO que não tá falantando nada.

Qual banco :?: Tenta por o ponto e virgula no final da tua sql

Cara a virgula ta ai no fim da minha String sql…O meu banco eu to passando la na minha Connection Factory olha ai, aqui no DAO eu so passo a tabela que é contatos:

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

}

no fim da tua string … que é executada no banco… nao no fim da frase do conceito de java!

Não gera nenhuma exception?

Faz um debug e ve em qual parte que ta travando ou se nao ta travando… segue o debug!

É coloquei a virgula no final ajustei a string sql e teste o insert direto no banco la funcionou, tentei o debug ele executa mostra a pagina no navegador, quando eu clico em salvar vai pra pagina e no status do debug fica so:

Anexando a tomcat_shared_memory_id
Executando programa do usuário

e nao sai dai nem apresenta erros.

Cria uma classe java de teste… e tenta fazer a inserção por essa classe java!

Se inserir pela sua classe java tu sabe que é algum problema na transição web - app…

Se não inserir tu sabe que é problema no teu dao…

DAi assim tu vai restringindo teu problema até chegar no lugar certo que é o problema…

:smiley: :smiley:

Cara fiz o que voce falou e provavelmente o errro seja na conexão, eu criei um novo dao pra inserir e usei a mesma CONNECTION FACTORY me retornou um erro gigantesco e então mudei somente a sintaxe para:

 con = DriverManager.getConnection("jdbc:mysql:172.16.10.66:3306:veiculos", "xxxx","xxx");

e me retornou um erro menor:

Exception in thread "main" java.sql.SQLException: No suitable driver found for jdbc:mysql:172.16.10.66:3306:veiculos
        at java.sql.DriverManager.getConnection(DriverManager.java:602)
        at java.sql.DriverManager.getConnection(DriverManager.java:185)
        at banco.ConnectionFactory.getConnection(ConnectionFactory.java:22)
        at dao.TesteInsert.insesir(TesteInsert.java:23)
        at dao.ExecutaInsert.main(ExecutaInsert.java:35)
Java Result: 1

Uma pergunta basica… tem o jar do mysql né?

Tem sim com certeza, agora um detalhe que não sei se faz diferença eu estou executando o netbeans numa maquina windows e o mysql esta instalado em outra maquina da rede que é linux, qual é a sintaxe certa com o endereço do banco?

tenta mandar sem a porta 3306

Quando eu utilizava na minha app eu nao setava implicitamente a port number do mysql