[RESOLVIDO] Erro ao usar Insert JDBC

Eu tenho um banco de dados criado e fiz a conexão usando o driver JDBC. O problema é que quando uso o comando Insert, ele lança um SQLException. A conexão vai bem, é só o comando mesmo que da erro.

Classe de conexão

[code]public class DbCon
{

private Connection con;

public DbCon()
{
    try
    {
        Class.forName("com.mysql.jdbc.Driver");
        this.con = DriverManager.getConnection(
                "jdbc:mysql://localhost/reposicaopecas?user=root&password=123");
    } catch (ClassNotFoundException ex)
    {
        javax.swing.JOptionPane.showMessageDialog(null, "Constr ClassNotFoundException");
    } catch (SQLException ex)
    {
        javax.swing.JOptionPane.showMessageDialog(null, "Constr SQLException");
    }
}

public void cadastrarFornecedor(String nf, String razs, String cidade, String uf,
        String cep, String endereco, int numero, String bairro, String cnpj, String ie,
        String e1, String e2, String t1, String t2)
{
    try
    {            
        String com = "INSERT INTO fornecedor (nome_fantasia, razao_social, cidade, uf, cep,"
            + " endereco, numero, bairro, cnpj, inscricao_estadual, email1, email2, telefone1, telefone2)"
            + " VALUES(" + nf + ", " + razs + ", " + cidade + ", " + uf + ", " + cep + ", " + endereco
            + ", " + numero + ", " + bairro + ", " + cnpj + ", " + ie + ", " + e1 + ", " + e2 + ", "
            + t1 + ", " + t2 + ")";
        Statement stm = this.con.createStatement();
        int rs = stm.executeUpdate(com);
        stm.close();
        this.con.close();
        javax.swing.JOptionPane.showMessageDialog(null, "Cadastro efetuado com sucesso");
    }catch(SQLException ex)
    {
        javax.swing.JOptionPane.showMessageDialog(null, "cadastrarFornec SQLException");
    }
}

}[/code]

        public void mouseClicked(MouseEvent e)
        {
            DbCon c = new DbCon();
            int num = Integer.parseInt(txtNum.getText());

            c.cadastrarFornecedor(txtNFant.getText(),
                                  txtRazSoc.getText(),
                                  txtCidade.getText(),
                                  cbUf.getEditor().getItem().toString(),
                                  ftxtCep.getText(),
                                  txtEndereco.getText(),
                                  num,
                                  txtBairro.getText(),
                                  ftxtCnpj.getText(),
                                  ftxtIE.getText(),
                                  txtEmail1.getText(),
                                  txtEmail2.getText(),
                                  ftxtTel1.getText(),
                                  ftxtTel2.getText());
        }

O que eu to fazendo de errado? =/

Iskifi,

Pra solucionar o problema, seria interessante que você colocasse qual SQLException que tá sendo lançada.
Mas antes de fazer isso, tenta fazer a busca usando PreparedStatement.
Outra coisa, em vez de passar todos os valores por parâmetro no método, passa somente um objeto (Fornecedor no teu caso).public void cadastrarFornecedor(Fornecedor fornecedor)[code]StringBuffer sql = new StringBuffer();
sql.append(“INSERT INTO fornecedor(nome_fantasia, razao_social, cidade, uf, cep,”);
sql.append(" endereco, numero, bairro, cnpj, inscricao_estadual, email1, email2,");
sql.append(" telefone1, telefone2)");
sql.append(" VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?)");

PreparedStatement stmt = con.prepareStatement(sql.toString());
stmt.setObject(1, fornecedor.getNomeFantasia());
stmt.setObject(2, fornecedor.getRazaoSocial());
stmt.setObject(3, fornecedor.getCidade());
stmt.setObject(4, fornecedor.getUf());
stmt.setObject(5, fornecedor.getCep());
stmt.setObject(6, fornecedor.getEndereco());
stmt.setObject(7, fornecedor.getNumero());
stmt.setObject(8, fornecedor.getBairro());
stmt.setObject(9, fornecedor.getCnpj());
stmt.setObject(10, fornecedor.getInscricaoEstadual());
stmt.setObject(11, fornecedor.getEmail1());
stmt.setObject(12, fornecedor.getEmail2());
stmt.setObject(13, fornecedor.getTelefone1());
stmt.setObject(14, fornecedor.getTelefone2());
stmt.execute();
stmt.close();

con.close();
[/code]Abraço.

isaiaspf

Aproveitando o embalo, organize melhor seu código.
Coloque sua String em uma String final por exemplo;

private final static String ADICIONAR_CONTATO = "INSERT INTO CONTATOS (NOME, EMAIL, ENDERECO) VALUES (?,?,?)";

Quem está com o problema é o Iskifi. E de qualquer forma, eu não faria dessa forma que você sugeriu.

Opa, valeu pela ajuda isaiaspf. Funcionou agora. Só uma coisa, o netbeans da uma sugestão de mudar StringBuffer pra StringBuilder. Me parece a mesma coisa. Tem alguma vantagem?

mateuscs, valeu também, ficou organizado usando sua dica ^^

Tanto faz qual você usa, não vai ter diferença no desempenho.

Mais detalhes:
Diferença entre StringBuffer e StringBuilder