Ajuda com sintaxe MySql

Olá,

gostaria de uma ajuda, estou tentando fazer um insert no MySql, e tem um checkbox entre o formulario porem quando mando compilar ele da o seguinte erro " Incorrect integer value: ‘false’ for column ‘ativo’ at row 1 " .

O meu insert esta da seguinte maneira:

 String sql = "INSERT INTO "
                   + "fornecedor(cnpj, data, razao_social, nome_fantasia, insc_estadual, endereco,"
                   + "complemento, numero, bairro, cep, id_pais, id_uf, id_municipio,"
                   + "telefone, celular,"
                   + "fax, contato, nro_banco, nro_agencia, conta_corrente, email, site, ativo, cpf, rg, nome)"
                   + "VALUES ('"+f.getCNPJ()+"', '"+f.getData()+"','"+f.getRazaoSocial()+"','"+f.getNomeFantasia()+"','"+f.getInscEstadual()+"','"+f.getEndereco()+"',"
                   + "'"+f.getComplemento()+"','"+f.getNumero()+"','"+f.getBairro()+"','"+f.getCEP()+"','"+f.getIdPais()+"','"+f.getIdUF()+"','"+f.getIdMunicipio()+"',"
                   + "'"+f.getTelefone()+"','"+f.getCelular()+"','"+f.getFAX()+"','"+f.getContato()+"','"+f.getNroBanco()+"','"+f.getNroAgencia()+"','"+f.getContaCorrente()+"','"+f.geteMail()+"',"
                   + "'"+f.getSite()+"','"+f.getAtivo()+"','"+f.getCPF()+"','"+f.getRG()+"','"+f.getNome()+"');";

            Statement stmt = conexao.createStatement();
            stmt.execute(sql,Statement.RETURN_GENERATED_KEYS);

Grato.

Caro wesleypc prefira o uso de PreparedStatement ao invés de Statement. link
O e o seu problema e que vc ta passando um valor false direito para o MySQL.
Substitua:
Quando for true a coluna deve receber 1
Quando for false a coluna deve receber 0

Ou use PreparedStatement, como sugerido, e nunca mais tenha esse tipo de problema. Com o PreparedStatement, é o Java que conhece o formato do banco. Ele que se preocupa se o valor deve vir entre aspas simples, em que formato a data deve ser fornecida, se um boolean deve ter o valor 0 ou 1 no banco.

Se você quiser ver o quão frágil fica seu sistema sem o PreparedStatement, tente cadastrar como fornecedor o MacDonald’s, ou o Bob’s.
As aspas simples vão destruir sua SQL em dois tempos.

Sem falar que um usuário mal intencionado que conheça programação poderia dar o nome do seu fornecedor assim:

Só ilustrando o que os amigos disseram acima:

-se você usar mySQL não esqueça*


import com.mysql.jdbc.PreparedStatement;

Formando uma consulta:


PreparedStatement pst = seuObjetoDeConexao.prepareStatement("SELECT campo1,campo2,campoN FROM suaTabela WHERE campo1=?");

/*Agora, dependendo do tipo do campo (int, String, double, etc...) você usa um método específico para passar o valor que substituirá o '?'
nesse exemplo, vamos imaginar que é um valor do tipo inteiro*/

pst.setInt(1,777);


ResultSet rs = pst.executeQuery();

Dai pra frente acho que você se vira, pra usar delete, insert ou update, você deve alterar pst.executeQuery() pra pst.executeUpdate()

Olá,

consegui consertar o erro que estava dando daseguinte maneira:

‘"+(f.getAtivo()?1:0)+"’

Agora estou com um erro de sintaxe, segue o erro:

java.sql.SQLException: Column Index out of range, 0 < 1.

Alguem poderia me dizer o que é esse erro?

Grato.

Isso provavelmente é na hora de ler os dados da sua coluna.

Você deve fazer algo como:

No Java, o primeiro índice de uma coluna é 1, e não 0. Mas melhor ainda é você usar o nome do campo:

Assim você não precisará revisar todos os gets caso uma coluna seja acrescentada ou removida do select.

Você mudou para o PreparedStatement? No PreparedStatement, os índices também começam em 1.

Olá viniGodoy,

coloquei o PreparedStatement, mais deu o seguinte erro: java.lang.ClassCastException: com.mysql.jdbc.StatementImpl cannot be cast to com.mysql.jdbc.PreparedStatement

Segue meu código abaixo, poderia verificar se esta incorreto alguma coisa?


       try {
            String sql = "INSERT INTO "
                   + "fornecedor(cnpj, data, razao_social, nome_fantasia, insc_estadual, endereco,"
                   + "complemento, numero, bairro, cep, id_pais, id_uf, id_municipio,"
                   + "telefone, celular,"
                   + "fax, contato, nro_banco, nro_agencia, conta_corrente, email, site, ativo, cpf, rg, nome)"
                   + "VALUES ('"+f.getCNPJ()+"', '"+f.getData()+"','"+f.getRazaoSocial()+"','"+f.getNomeFantasia()+"','"+f.getInscEstadual()+"','"+f.getEndereco()+"',"
                   + "'"+f.getComplemento()+"','"+f.getNumero()+"','"+f.getBairro()+"','"+f.getCEP()+"','"+f.getIdPais()+"','"+f.getIdUF()+"','"+f.getIdMunicipio()+"',"
                   + "'"+f.getTelefone()+"','"+f.getCelular()+"','"+f.getFAX()+"','"+f.getContato()+"','"+f.getNroBanco()+"','"+f.getNroAgencia()+"','"+f.getContaCorrente()+"','"+f.geteMail()+"',"
                   + "'"+f.getSite()+"','"+(f.getAtivo()?1:0)+"','"+f.getCPF()+"','"+f.getRG()+"','"+f.getNome()+"');";

//            Statement stmt = conexao.createStatement();
//            stmt.execute(sql,Statement.RETURN_GENERATED_KEYS);

            PreparedStatement stmt = (PreparedStatement) conexao.createStatement();
            stmt.execute(sql,Statement.RETURN_GENERATED_KEYS);

            ResultSet rs = stmt.getGeneratedKeys();
            int idGerado = 0;
            if(rs.next()){
                idGerado = rs.getInt(1);
            }
            String ret = "";
            if (idGerado != 1){

                ret = this.salvaVendedores(f.getListaVendedores(), idGerado);
            }

            stmt.close();
            return "true";
        } catch (Exception e) {
            e.printStackTrace();
            return e.getMessage();
        }

É porque vc fez errado:

       try {
            String sql = "INSERT INTO fornecedor("
                   + " cnpj, data, razao_social, nome_fantasia, insc_estadual,"
                   + " endereco, complemento, numero, bairro, cep,"
                   + " id_pais, id_uf, id_municipio, telefone, celular,"
                   + " fax, contato, nro_banco, nro_agencia, conta_corrente,"
                   + " email, site, ativo, cpf, rg, nome)"
                   + "VALUES (?, ?, ?, ?, ?,"
                   + " ?, ?, ?, ?, ?,"
                   + " ?, ?, ?, ?, ?,"
                   + " ?, ?, ?, ?, ?,"
                   + " ?, ?, ?, ?, ?, ?)";

            PreparedStatement stmt = conexao.prepareStatement(sql);
            stmt.setString(1, f.getCNPJ());
            stmt.setDate(2, f.getData());
            stmt.setString(3, f.getRazaoSocial());
            //Complete aqui o resto dos campos
            stmt.executeUpdate();
            ResultSet rs = stmt.getGeneratedKeys();
            int idGerado = 0;
            if(rs.next()){
                idGerado = rs.getInt(1);
            }
            String ret = "";
            if (idGerado != 1){
                ret = this.salvaVendedores(f.getListaVendedores(), idGerado);
            }
            rs.close();
            stmt.close();
            return "true";
        } catch (Exception e) {
            e.printStackTrace();
            return e.getMessage();
        }

eu uso o MySQL como banco, e não importo o com.mysql.jdbc.PreparedStatement não,
importo simplesmente o java.sql.; e nunca tive erros não.
Ao autor do tópico ae, tenta simplesmente importar o java.sql.
e vê se da certo.

so pra encargo de consciência, o que diferencia o com.mysql.jdbc.PreparedStatement do java.sql.* ?

um abraço

É melhor importar só o do java.sql, nunca o do mysql.

A diferença é que o do java.sql é a interface, e o do mysql é a implementação da interface. Quem é responsável por obter essa implementação de forma transparente é o driver. Se você vincular a java.mysql direto, você terá muito mais difículdades se um dia decidir trocar de banco de dados.

justamente, éra isso que eu tava pensando.
só outra coisa, eu escuto falar muito no Hibernate, só que ja vi e dei uma olhada rapida, parece que ele
pode sofrer SQLInjection, então já não achei uma boa opção, mas desculpe o desvio de assunto, mas qual
a opinião de vocês, acham melhor utilizar o PreparedStatement ou o Hibernate?
um abraço

Olá ViniGodoy,

alterei para o jeito que vc flw, porem esta dando o seguinte erro: You need to specify Statement.RETURN_GENERATED_KEYS to Statement.executeUpdate() or Connection.prepareStatement()

Segue o Código:


        try {

             String sql = "INSERT INTO "
             + "fornecedor(cnpj, data, razao_social, nome_fantasia, insc_estadual,"
             + "endereco, complemento, numero, bairro, cep,"
             + "id_pais, id_uf, id_municipio, telefone, celular,"
             + "fax, contato, nro_banco, nro_agencia, conta_corrente,"
             + " email, site, ativo, cpf, rg, nome)"
             + "VALUES (?, ?, ?, ?, ?,"
             + " ?, ?, ?, ?, ?,"
             + " ?, ?, ?, ?, ?,"
             + " ?, ?, ?, ?, ?,"
             + " ?, ?, ?, ?, ?, ?)";

      PreparedStatement stmt = (PreparedStatement) conexao.prepareStatement(sql);
      stmt.setString(1, f.getCNPJ());
      stmt.setString(2, f.getData());
      stmt.setString(3, f.getRazaoSocial());
      stmt.setString(4, f.getNomeFantasia());
      stmt.setString(5, f.getInscEstadual());
      stmt.setString(6, f.getEndereco());
      stmt.setString(7, f.getComplemento());
      stmt.setString(8, f.getNumero());
      stmt.setString(9, f.getBairro());
      stmt.setString(10, f.getCEP());
      stmt.setString(11, f.getIdPais());
      stmt.setInt(12, f.getIdUF());
      stmt.setInt(13, f.getIdMunicipio());
      stmt.setString(14, f.getTelefone());
      stmt.setString(15, f.getCelular());
      stmt.setString(16, f.getFAX());
      stmt.setString(17, f.getContato());
      stmt.setString(18, f.getNroBanco());
      stmt.setString(19, f.getNroAgencia());
      stmt.setString(20, f.getContaCorrente());
      stmt.setString(21, f.geteMail());
      stmt.setString(22, f.getSite());
      stmt.setBoolean(23, f.getAtivo());
      stmt.setString(24, f.getCPF());
      stmt.setString(25, f.getRG());
      stmt.setString(26, f.getNome());
      
      
      stmt.executeUpdate();
      ResultSet rs = stmt.getGeneratedKeys();
      int idGerado = 0;
      if(rs.next()){
          idGerado = rs.getInt(1);
      }
      String ret = "";
      if (idGerado != 1){

          ret = this.salvaVendedores(f.getListaVendedores(), idGerado);
      }

      stmt.close();
      return "true";
}

olha, vou mandar um método basico que uso para inserção em BD, eu faço com que o banco gere automaticamente
a codigo, ou seja, ele é AUTO_INCREMENT, e uso ele como a chave primária, por isso que ele nem aparece aqui no exemplo.

aqui vai o código:

public void adicionarCliente(Cliente cliente)
	{
		// COMANDO SQL QUE SERÁ EXECUTADO
		String comandoSQL = 
"INSERT INTO CLIENTE (NOME, ENDEREÇO, NUMERO, BAIRRO, CIDADE, UF, TELEFONE, CELULAR, EMAIL) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)"; // aqui devem entrar os devidos valores
		
		try // executa os comandos com o banco de dados
		{
			
			// prepared statement para a inserção no banco
			
			executarSQL = conexao.prepareStatement(comandoSQL); // insere o comando no statement, onde conexao é a 
                       //  variavel de conexão com o BD, no caso, uso uma classe exclusivamente para isso.
			
			// seta os valores, de acordo com a ordem da interrogação
			
			executarSQL.setString(1, cliente.getNome()); // coloca o nome no banco de dados
			
                        executarSQL.setString(2, cliente.getEndereco()); // coloca o endereço
                        executarSQL.setInt(3, cliente.getNumero()); // coloca o numero da residencia
                        executarSQL.setString(4, cliente.getBairro()); // coloca o bairro
                        executarSQL.setString(5, cliente.getCidade()); // coloca a cidade
                        executarSQL.setString(6, cliente.getUF()); // coloca o UF
                        
			executarSQL.setString(7, cliente.getTelefone()); // coloca o telefone
			executarSQL.setString(8, cliente.getCelular());  // coloca o celular
                        executarSQL.setString(9, cliente.getEmail()); // coloca o email
			
			// executa o statement
			executarSQL.execute();
			
			JOptionPane.showMessageDialog(null, "Dados Gravados Com Sucesso",
                                "Resultado", JOptionPane.INFORMATION_MESSAGE);
			
			executarSQL.close(); // fecha o statement do comando sql
			
			conexao.close(); // fecha a conexão com o banco de dados
			
			System.out.println("\nConexão Fechada!\n");
		}
		catch(SQLException e)
		{
			System.out.println("Cliente Não Adicionado!");
			
			throw new RuntimeException(e);
		}

tente adequa-lo a sua necessidade, um abraço.

e para colocar, por exemplo, num ArrayList, so uso o seguinte método:

public List<Cliente> getContatos()
	{
		try
		{
			System.out.println("\nPesquisando...\n\n");
			List<Cliente> contatosList = new ArrayList<Cliente>(); // cria o arrayList
			
			PreparedStatement pesquisarSQL = this.conexao.prepareStatement( // gera o codigo sql para a consulta, logo abaixo
				"SELECT * FROM CLIENTE" );
				
			ResultSet resultadoQuery = pesquisarSQL.executeQuery(); // coloca em resultadoQuery o resultado da consulta ao BD
			
			while (resultadoQuery.next())
			{
				Cliente contato = new Cliente(); // cria o objeto Cliente
				
                              //cod_cliente, nome, endereço... são os campos na tabela.

                                contato.setCodigo(resultadoQuery.getInt("cod_cliente"));
				contato.setNome(resultadoQuery.getString("nome")); // captura o nome
				contato.setEndereco(resultadoQuery.getString("endereço")); // captura o endereço
                                contato.setNumero(resultadoQuery.getInt("numero"));
                                contato.setBairro(resultadoQuery.getString("bairro"));
                                contato.setCidade(resultadoQuery.getString("cidade"));
                                contato.setUF(resultadoQuery.getString("uf"));
                                contato.setTelefone(resultadoQuery.getString("telefone"));
				contato.setCelular(resultadoQuery.getString("celular")); // captura o celular
				contato.setEmail(resultadoQuery.getString("email"));  // captura o email
				
				contatosList.add(contato); // adiciona o contato ao ArrayList
					
			}			
			
			resultadoQuery.close(); // fecha o resultado da pesquisa
			pesquisarSQL.close(); // fecha o codigo de pesquisaSQL
                        
                        System.out.println("\nPesquisa Concluída");
			
			return contatosList;	
		}
		catch(SQLException e)
		{
			System.out.println("\nPesquisa Errada!\n");
			throw new RuntimeException(e);
		}
		
	}

novamente, tente adapta-la as suas necessidades, só mais uma demonstração rsrs.
um abraço

E só para finalizar, esse exemplo mostra melhor o uso de um PreparedStatement, por exemplo, para editar um
determinado Cliente:

public void editarCliente(Cliente cliente) // recebe o Objeto que será usado no PreparedStatement
        {
            String comandoSQL =                                 // todo esse bloco, é o comando SQL que será executado
                    "UPDATE CLIENTE SET " +                   // as interrogações serão substituidas pelo que será colocado no PreparedStatement
                    "NOME = ?, " +
                    "ENDEREÇO = ?, " +
                    "NUMERO = ?, " +
                    "BAIRRO = ?, " +
                    "CIDADE = ?, " +
                    "UF = ?, " +
                    "TELEFONE = ?, " +
                    "CELULAR = ?, " +
                    "EMAIL = ? " +
                    "WHERE COD_CLIENTE = ?";
                      
            try
            {
                PreparedStatement editarSQL = conexao.prepareStatement(comandoSQL); // coloca o comandoSQL no preparedStatement, para serem substituidas as interrogações
                
                // seta por ordem os valores que serão colocados nas interrogações
                editarSQL.setString(1, cliente.getNome());
                editarSQL.setString(2, cliente.getEndereco());
                editarSQL.setInt(3, cliente.getNumero());
                editarSQL.setString(4, cliente.getBairro());
                editarSQL.setString(5, cliente.getCidade());
                editarSQL.setString(6, cliente.getUF());
                editarSQL.setString(7, cliente.getTelefone());
                editarSQL.setString(8, cliente.getCelular());
                editarSQL.setString(9, cliente.getEmail());
                editarSQL.setInt(10, cliente.getCodigo());
                
                editarSQL.execute(); // executa o preparedStatement
                editarSQL.close();  // fecha o preparedStatement
                
                JOptionPane.showMessageDialog(null, "Cliente Alterado com Sucesso!");
            }
            catch(SQLException e)
            {
                JOptionPane.showMessageDialog(null, "Cliente Não Alterado");
                throw new RuntimeException(e);
            } 
        }

está bem comentado, tomara que entenda, uso tantos comentários, mas é pelo fato de cursar Licenciatura em computação, ae quando futuramente
eu for dar aula, é muito bom ser comentado para o bom entendimento dos futuros alunos… rsrsrs

um abraço

Olá,

Acho que o meu INSERT eu consegui arrumar graças a ajuda de vcs, o meu unico problema agora é para manipular o ResultSet, não sei o q colocar na linha 48 abaixo, se eu coloco
ResultSet rs = stmt.executeQuery(); ele da o seguinte erro = Can not issue data manipulation statements with executeQuery()

E se eu coloco ResultSet rs = stmt.getGeneratedKeys(); ele da o seguinte erro = You need to specify Statement.RETURN_GENERATED_KEYS to Statement.executeUpdate() or Connection.prepareStatement()

Gostaria de uma ajuda para resolver isso…

 try {

             String sql = "INSERT INTO "
             + "fornecedor(cnpj, data, razao_social, nome_fantasia, insc_estadual,"
             + "endereco, complemento, numero, bairro, cep,"
             + "id_pais, id_uf, id_municipio, telefone, celular,"
             + "fax, contato, nro_banco, nro_agencia, conta_corrente,"
             + " email, site, ativo, cpf, rg, nome)"
             + "VALUES (?, ?, ?, ?, ?,"
             + " ?, ?, ?, ?, ?,"
             + " ?, ?, ?, ?, ?,"
             + " ?, ?, ?, ?, ?,"
             + " ?, ?, ?, ?, ?, ?)";

      PreparedStatement stmt = (PreparedStatement) conexao.prepareStatement(sql);

      stmt.setString(1, f.getCNPJ());
      stmt.setString(2, f.getData());
      stmt.setString(3, f.getRazaoSocial());
      stmt.setString(4, f.getNomeFantasia());
      stmt.setString(5, f.getInscEstadual());
      stmt.setString(6, f.getEndereco());
      stmt.setString(7, f.getComplemento());
      stmt.setString(8, f.getNumero());
      stmt.setString(9, f.getBairro());
      stmt.setString(10, f.getCEP());
      stmt.setString(11, f.getIdPais());
      stmt.setInt(12, f.getIdUF());
      stmt.setInt(13, f.getIdMunicipio());
      stmt.setString(14, f.getTelefone());
      stmt.setString(15, f.getCelular());
      stmt.setString(16, f.getFAX());
      stmt.setString(17, f.getContato());
      stmt.setString(18, f.getNroBanco());
      stmt.setString(19, f.getNroAgencia());
      stmt.setString(20, f.getContaCorrente());
      stmt.setString(21, f.geteMail());
      stmt.setString(22, f.getSite());
      stmt.setBoolean(23, f.getAtivo());
      stmt.setString(24, f.getCPF());
      stmt.setString(25, f.getRG());
      stmt.setString(26, f.getNome());
      
      
      //stmt.executeUpdate();
      stmt.execute();

      ResultSet rs = stmt.executeQuery();
      int idGerado = 0;
      if(rs.next()){
          idGerado = rs.getInt(1);
      }
      String ret = "";
      if (idGerado != 1){

          ret = this.salvaVendedores(f.getListaVendedores(), idGerado);
      }

      stmt.close();
      return "true";

Você deve usar o executeUpdate() para INSERT, UPDATE e DELETE. Ele retorna um int com o número de registros afetados.
E você deve usar o executeQuery() para SELECTS.

Para poder usar o getGeneratedKeys, crie o preparedStatement assim:

ViniGodoy,

Inseri a linha 49 no meu código, ele esta inserindo na tabela mais ele esta apresentando o seguinte erro agora: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)’ at line 1


   public String insere(Fornecedor f){
        try {

             String sql = "INSERT INTO "
             + "fornecedor(cnpj, data, razao_social, nome_fantasia, insc_estadual,"
             + "endereco, complemento, numero, bairro, cep,"
             + "id_pais, id_uf, id_municipio, telefone, celular,"
             + "fax, contato, nro_banco, nro_agencia, conta_corrente,"
             + " email, site, ativo, cpf, rg, nome)"
             + "VALUES (?, ?, ?, ?, ?,"
             + " ?, ?, ?, ?, ?,"
             + " ?, ?, ?, ?, ?,"
             + " ?, ?, ?, ?, ?,"
             + " ?, ?, ?, ?, ?, ?)";

      PreparedStatement stmt = (PreparedStatement) conexao.prepareStatement(sql);


      stmt.setString(1, f.getCNPJ());
      stmt.setString(2, f.getData());
      stmt.setString(3, f.getRazaoSocial());
      stmt.setString(4, f.getNomeFantasia());
      stmt.setString(5, f.getInscEstadual());
      stmt.setString(6, f.getEndereco());
      stmt.setString(7, f.getComplemento());
      stmt.setString(8, f.getNumero());
      stmt.setString(9, f.getBairro());
      stmt.setString(10, f.getCEP());
      stmt.setString(11, f.getIdPais());
      stmt.setInt(12, f.getIdUF());
      stmt.setInt(13, f.getIdMunicipio());
      stmt.setString(14, f.getTelefone());
      stmt.setString(15, f.getCelular());
      stmt.setString(16, f.getFAX());
      stmt.setString(17, f.getContato());
      stmt.setString(18, f.getNroBanco());
      stmt.setString(19, f.getNroAgencia());
      stmt.setString(20, f.getContaCorrente());
      stmt.setString(21, f.geteMail());
      stmt.setString(22, f.getSite());
      stmt.setBoolean(23, f.getAtivo());
      stmt.setString(24, f.getCPF());
      stmt.setString(25, f.getRG());
      stmt.setString(26, f.getNome());
      
      
      stmt.executeUpdate();

      stmt.execute(sql,Statement.RETURN_GENERATED_KEYS);

      ResultSet rs = stmt.getGeneratedKeys(); 
      int idGerado = 0;
      if(rs.next()){
          idGerado = rs.getInt(1);
      }
      String ret = "";
      if (idGerado != 1){

          ret = this.salvaVendedores(f.getListaVendedores(), idGerado);
      }

      stmt.close();
      return "true";

        } catch (Exception e) {
            e.printStackTrace();
            return e.getMessage();
        }
    }

Dê um espaço depois do ) de nome, na linha 9. Caso contrário ficará grudado com o VALUES da linha 10.

Ola,

ainda estou com um probleminha aqui, o insert ta funcionando e tudo mais, porem ele ainda acusa uma exception, segue a mesma: You need to specify Statement.RETURN_GENERATED_KEYS to Statement.executeUpdate() or Connection.prepareStatement()

Alguem poderia me ajudar a solucionar ess exception?

Segue o código:


  try {

             String sql = "INSERT INTO "
             + "fornecedor(cnpj, data, razao_social, nome_fantasia, insc_estadual,"
             + "endereco, complemento, numero, bairro, cep,"
             + "id_pais, id_uf, id_municipio, telefone, celular,"
             + "fax, contato, nro_banco, nro_agencia, conta_corrente,"
             + " email, site, ativo, cpf, rg, nome) "
             + "VALUES (?, ?, ?, ?, ?,"
             + " ?, ?, ?, ?, ?,"
             + " ?, ?, ?, ?, ?,"
             + " ?, ?, ?, ?, ?,"
             + " ?, ?, ?, ?, ?, ?)";

      //PreparedStatement stmt = (PreparedStatement) conexao.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
    PreparedStatement stmt = (PreparedStatement) conexao.prepareStatement(sql);

      stmt.setString(1, f.getCNPJ());
      stmt.setString(2, f.getData());
      stmt.setString(3, f.getRazaoSocial());
      stmt.setString(4, f.getNomeFantasia());
      stmt.setString(5, f.getInscEstadual());
      stmt.setString(6, f.getEndereco());
      stmt.setString(7, f.getComplemento());
      stmt.setString(8, f.getNumero());
      stmt.setString(9, f.getBairro());
      stmt.setString(10, f.getCEP());
      stmt.setString(11, f.getIdPais());
      stmt.setInt(12, f.getIdUF());
      stmt.setInt(13, f.getIdMunicipio());
      stmt.setString(14, f.getTelefone());
      stmt.setString(15, f.getCelular());
      stmt.setString(16, f.getFAX());
      stmt.setString(17, f.getContato());
      stmt.setString(18, f.getNroBanco());
      stmt.setString(19, f.getNroAgencia());
      stmt.setString(20, f.getContaCorrente());
      stmt.setString(21, f.geteMail());
      stmt.setString(22, f.getSite());
      stmt.setBoolean(23, f.getAtivo());
      stmt.setString(24, f.getCPF());
      stmt.setString(25, f.getRG());
      stmt.setString(26, f.getNome());
      
      
      stmt.executeUpdate();

     // stmt.execute(sql,Statement.RETURN_GENERATED_KEYS);

      ResultSet rs = stmt.getGeneratedKeys(); 
      int idGerado = 0;
      if(rs.next()){
          idGerado = rs.getInt(0);
      }
      String ret = "";
      if (idGerado != 1){

          ret = this.salvaVendedores(f.getListaVendedores(), idGerado);
      }

      stmt.close();
      return "true";

      } catch (Exception e) {
            e.printStackTrace();
            return e.getMessage();
            //return "";
        }