Select mysql java urgente

Eae galera to com um problema que quero pegar o email que volto no meu select do banco de dados o problema e que sempre que eu pego o valor e imprimo ele funciona normalmente mas depois tento usar ele ne outra view e simplismente da null

1 tela de login
Usuario u = new Usuario();
UsuarioDAO dao = new UsuarioDAO();
Emprestimo emp = new Emprestimo();

    Connection con = ConnectionFactory.getConnection();
    PreparedStatement stmt = null;
    ResultSet rs = null;

Usuario usu = new Usuario();
boolean check = false;

    try {

        stmt = con.prepareStatement("SELECT email FROM usuario WHERE nome_usuario = ? and senha = ? ");
        stmt.setString(1, txtnome.getText());
        stmt.setString(2, txtsenha.getText());

        rs = stmt.executeQuery();

   while (rs.next()) {
   
    emaill =(rs.getString("email"));     
        System.out.println(emaill);    
        emp.setUsuario_email_emp(emaill);
            check = true;
        }


    } catch (SQLException ex) {
        Logger.getLogger(UsuarioDAO.class.getName()).log(Level.SEVERE, null, ex);
    } finally {
        ConnectionFactory.closeConnection(con, stmt, rs);
    }

 

   
   
   if(check = true){
       System.out.println(emp.getUsuario_email_emp());

       new ViewHome().setVisible(true);
       this.dispose();
   }else{
       JOptionPane.showMessageDialog(null, "Senha incorreta!");
   }

aquele xiaxia e o email que retorna quando logo

2 view onde uso o emaill

Connection con = ConnectionFactory.getConnection();
UsuarioDAO u = new UsuarioDAO();
Usuario uu = new Usuario();

    Emprestimo emp = new Emprestimo() ;
    
    
        PreparedStatement stmt = null;
        String sql = "INSERT INTO emprestimo(exemplar_livro_id, data_emprestimo, prazo , usuario_email ) VALUES (?,?,?,? )";
        
    try {
        SimpleDateFormat dformat = new SimpleDateFormat("yyyy-MM-dd");
        String emprestimodata  = dformat.format(jDate1.getDate());
          String emprestimodata1  = dformat.format(jDate2.getDate());
          stmt = con.prepareStatement(sql);
          
        stmt.setInt(1, emp.getId_exemplar());
        System.out.println(u.email);
          System.out.println(uu.emailsalvo);
        stmt.setString(2, emprestimodata);
        stmt.setString(3, emprestimodata1);
         stmt.setString(4, emp.getUsuario_email_emp());
        stmt.executeUpdate();
        
        JOptionPane.showMessageDialog(null, "Salvo com sucesso");
    } catch (SQLException ex) {
        JOptionPane.showMessageDialog(null, "Erro ao salvar"+ex);
    }finally{
        ConnectionFactory.closeConnection(con,stmt);
    }

PS quando executo a 1 tela volta o email perfeitamente porem quando chamo na segunda nao funciona volta null
erro que da quando preciso do email

Olá,

Ao tentar inserir o registro na tabela Emprestimo o valor do email está nulo e na sua tabela não pode estar, ou seja, esse campo é not null.
O campo de email está nulo porque a variável emp está sendo instanciada novamente.
No início do método da segunda view você está realizando “Emprestimo emp = new Emprestimo();”. Nesse momento você atribui a “emp” um novo endereço de memória e não consegue mais acessar o valor de email.
As variáveis “u” e “uu” que você verifica através do Sysout estão nulas porque não foram preenchidas ao realizar login e também foram instanciadas novamente.
Talvez não seja isso, mas com as informações passadas é ísso que podemos concluir.
Sugiro que tente acessar as variáveis da view de login que já estão preenchidas ou crie uma classe que possa receber esses valores que você precisa consultar e tente acessá-lo utilizando um Singleton (padrão de projeto).

:slight_smile:
Boa sorte!

2 curtidas