GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

SQL syntax: right syntax to use near '?,?,?,?,?,?)'

Tags: #<Tag:0x00007fc3cc2b53f8> #<Tag:0x00007fc3cc2b5218> #<Tag:0x00007fc3cc2b50d8>

O código abaixo esta desenvolvendo um erro de conexão

Connection conexao;
		java.sql.PreparedStatement instrucaoSQL;
		ResultSet resultados;
		
		String sql = "INSERT INTO funcionarios(nome,sobrenome,dataNascimento,email,cargo,salario) VALUES (?,?,?,?,?,?)";
		//sql = sql + "VALUES (?,?,?,?,?,?)";
		
		try {
			conexao = DriverManager.getConnection(BancoDeDados.stringDeConexao, BancoDeDados.usuario, BancoDeDados.senha);
			instrucaoSQL = conexao.prepareStatement(sql);
			
			instrucaoSQL.setString(1, novoFuncionario.getNome());
			instrucaoSQL.setString(2, novoFuncionario.getSobreNome());
			instrucaoSQL.setString(3, novoFuncionario.getDataNascimento());
			instrucaoSQL.setString(4, novoFuncionario.getEmail());
			
			if(novoFuncionario.getId_funcionario()>0) {
				instrucaoSQL.setInt(5, novoFuncionario.getId_funcionario());
			}else {
				instrucaoSQL.setNull(5, java.sql.Types.INTEGER);
			}
			
			instrucaoSQL.setString(6, Double.toString(novoFuncionario.getSalario()));
			
			instrucaoSQL.executeUpdate(sql);
			
			JOptionPane.showMessageDialog(null,"Funcionario Adicionado com Sucesso!");
			
			Navegador.inicio();
			conexao.close();
			
		} catch (SQLException ex) {
			// TODO: handle exception
			JOptionPane.showMessageDialog(null,"Ocorreu um erro ao adicionar o Funcionario");
			Logger.getLogger(FuncionarioInserir.class.getName()).log(Level.SEVERE, null, ex);
		}

Testa essa query no seu banco, vê se vai dar erro também

Eu vou te passar um exemplo de Intsrução funcional, tu pega de exemplo e coloca em cima desse seu código, e o jeito mais facil de você entender e arrumar o problema:

 public void seuMetodo(Entidade e) {
  
     try {            
 Connection conexao  = SeuBanco.getConexao(); 
 PreparedStatement instrucaoSQL; 
 

        //INSTRUÇÃO SQL
      instrucaoSQL = conexao.prepareCall("INSERT INTO funcionarios(nome,sobrenome,dataNascimento,email,cargo,salario) VALUES(?,?,?,?,?,?);");

        instrucaoSQL.setString(1,e.getNome());
        instrucaoSQL.setString(2, e.getSobrenome());
        // aqui tu coloca o resto que falta
        instrucaoSQL.execute();
        SeuBanco.fecharConexao();
    } catch (SQLException ex) {
        Logger.getLogger(CellDAO.class.getName()).log(Level.SEVERE, null, ex);
    }
 
}

ve se da certo assim, qualquer problema só voltar aqui

Consegui encontrar o erro!
Falta de atenção minha:
Errado: instrucaoSQL.executeUpdate(sql);
Correto: instrucaoSQL.executeUpdate();

Boa

//