Pegar um valor selecionado no jComboBox1 e inserir no banco de dados MYSQL

Olá, tenho uma tabela no MYSQL onde quero salvar o Login , a Senha e o Perfil do usuário no caso ADMINISTRADOR ou FUNCIONÀRIO o login e a senha tudo bem estou conseguindo salvar Beleza mas não estou conseguindo pegar o valor selecionado no jComboBox1[ jCB_nivel] será que vc’s podem me ajudar??? aqui em baixo seque os códigos.Eu estou em dúvida se faz mesmo os get e set para nível que no caso é o valor que tenho que pegar do jComboBox[ jCB_nivel].

Essa é a Classe que possui o método incluiUsuario que estou usando pra salvar no banco.


public class ClassCadUsuario {
    
    /** Creates a new instance of ClassCadUsuario */
    public ClassCadUsuario() {    }
    
    private String login;
    private String senha;
    private String nivel;
    
    public void setUsuario(String _login, String _senha, String _nivel){
        this.login = _login;
        this.senha = _senha;
        this.nivel = _nivel;
        
    }
    
    public String getLogin(){
        return this.login;
    }
    
    public String getSenha(){
        return this.senha;
    }
    public String getNivel(){
       return this.nivel;
    
    }
    
    ClassConecta conexao = new ClassConecta();
  
    
    Statement stmt = null;
   
   public void incluiUsuario(){
            
   conexao.conecta();
        try{
          stmt = conexao.con.createStatement();  
          String ComandoSql ="insert into flogon (login, Senha, nivel ) values ('"+ getLogin() +"','"+ getSenha() +"','"+ getNivel() +"')"; 
           stmt.executeUpdate(ComandoSql);
            System.out.println("usuario inserido");
            stmt.close();
            conexao.con.close();
            
            JOptionPane.showMessageDialog(null,"Usuário Cadastrado: " + getLogin());
            
            System.out.println("Fechada");
        }catch(SQLException e){
            JOptionPane.showMessageDialog(null,"Ocorreu um erro no sistema, se o problema persistir contate o administrador:\n"+ e,"ATENÇÃO",JOptionPane.WARNING_MESSAGE);
        }
    }
    
    
    
}

Aqui é o código do botão ENTRAR do JFrame
Essa parte aqui[color=red] jCB_nivel.getSelectedItem());[/color] ta dando erro esta em vermelho.

 if(txtUser.getText().length() == 0 || txtSenha.getPassword().length == 0 ){        
         JOptionPane.showMessageDialog(null,"Preencha os campos","ATENÇÃO",JOptionPane.WARNING_MESSAGE);         
        }else{
        ClassCadUsuario usuario = new ClassCadUsuario();
        usuario.setUsuario(txtUser.getText(), txtSenha.getText(), [color=red]jCB_nivel.getSelectedItem());[/color]
        usuario.incluiUsuario();   
                 
         }
        
         this.dispose();
    }                                         

Boa tarde, Oziel!

O problema é que o método getSelectedItem() da classe JComboBox retorna um Object e o método setUsuario(String, String, String) da sua classe ClassCadUsuario espera uma String.

Veja a documentação da classe JComboBox.

Abraço!

utiliza o método toString.

tipo assim:

   jComboBox1.getSelectedItem().toString();//Tenta assim. Pelo menos no meu deu certo. E dá até hoje.

O que o Vingdel falou é verdade. O setUsuario está recebendo o tipo String para o JComboBox, quando na verdade ele é do tipo Object. Tente fazer essa alteração (creio que funcione).

E uma outra dica:

Use PrepareStatement no lugar do Statement. Pq do jeito que seu código para inserir dados no banco está, pode dar margem para a técnica de SQL Injection. Na apostila FJ21 da Caelum você pode encontrar maiores informações de como melhorar seu código para trabalhar com banco de dados e evitar a técnica de SQL Injection.

Abraços.