1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Reescrever código com o recurso try-with-resources

Tenho o seguinte problema, atualmente tenho um código de autenticação de login, porém toda vez que faço o login tenho problemas com a conexão com o banco que permanece aberta, com este problema descobri o recurso try-with-resources, porém como sou extremamente novo no mundo da programação não estou conseguindo criar a classe de corretamente.

Abaixo código original funcional, porém que não fecha conexão normalmente:

    Connection conn = null;
    ResultSet rs = null;
    PreparedStatement pst = null;

conn = JavaConnect.connectDb();
       String sql = "SELECT * FROM usuarios where nome_usuario= ? and senha_usuario= ?";
        try{
            pst = conn.prepareStatement(sql);
            pst.setString(1,jtxtUsuario.getText());
            pst.setString(2,jtxtSenha.getText());

            rs = pst.executeQuery();
            if(rs.next()){
                jfrmPrincipal principal = new jfrmPrincipal();
                principal.setVisible(true);
                this.dispose();
            }
            else{
                JOptionPane.showMessageDialog(null, "Senha ou Usuário Incorreto");
            }
        }catch(Exception e){
            JOptionPane.showMessageDialog(null, e);
        }
    }

Um grande problema ai é que este código estava sendo escrito diretamente no JFRAME e não em uma classe, logo tentei passar o código em uma classe e depois chamar o metodo, porem por falta de experiencia não consegui terminar o código por que não sei o que fazer, segue abaixo a classe que tentei criar chamada LoginDAO:

``` public void search(Login l){

    try
    {
       Connection conn = JavaConnect.connectDb();
       PreparedStatement pstmt = conn.prepareStatement(SQL_CONSULTA);
       ){

       pstmt = setString(1, l.getNome());
       pstmt = setString(2, l.getSenha());

       pstmt.executeQuery();
    }
    }
    catch(SQLException ex)
    {
        JOptionPane.showMessageDialog(null,"Erro ao inserir dados no DataBase.");
    }
    finally
    {
        JavaConnect.DesconnectDb(c,ps);
    }
    }

E como não estava conseguindo chamar o txt do Jframe na classe criei um GET/SET para passar os dados que irão ser validados na classe:

public class Login {

    private int id;
    private String nome;
    private String senha;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public String getSenha() {
        return senha;
    }

    public void setSenha(String senha) {
        this.senha = senha;
    } 
}

E dentro do botão do Jframe eu deixo o seguinte código para tentar passar as informações:

 private void jbtnConfimarActionPerformed(java.awt.event.ActionEvent evt) {                                             
       Login l = new  Login();
       LoginDAO dao = new LoginDAO();

       l.setNome(jtxtUsuario.getText());
       l.setSenha(jtxtSenha.getText());

       dao.search(l);

       this.dispose();
       jfrmPrincipal principal = new jfrmPrincipal();
       principal.setVisible(true);
    }

O meu maior problema e a falta de experiencia e não estou conseguindo passar o código da maneira que quero, que é usando o recurso do try-with-resources, por favor preciso de apoio para reescrever este código.

  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

1 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags java javadoc ou faça a sua própria pergunta.