Guetter e setter não pegam os valores [RESOLVIDO]

6 respostas
A
public void loguin (String nome , String senha) throws SQLException, ClassNotFoundException, FileNotFoundException, IOException{
    
       String sql="select * from coordenadores where nome=? and senha=?  ";
    PreparedStatement stmt=(PreparedStatement) conexao.prepareCall(sql);
  stmt.setString(1, nome);
     stmt.setString(2, senha);
    ResultSet rs=stmt.executeQuery();
       if(rs.next()==false){
       JOptionPane.showMessageDialog(null,"Usuario ou Senha incoretos ou não cadastrados");
      return;
       }
  if(rs.first()==true){
    gscadcoo c1= new gscadcoo();
    c1.setId(Long.valueOf(rs.getString("id")));
    c1.setNome(rs.getString("nome"));
    c1.setSenha(rs.getString("senha"));
    c1.setCurso(rs.getString("curso"));
    c1.setPeriodo(rs.getString("periodo"));
      System.out.println(c1.getNome());
  }
    rs.close();
    stmt.close();
    
         telacoordenador janela = new telacoordenador();
       janela.setLocationRelativeTo(null);
       janela.setVisible(true);
       }
este seria o codigo que vericfica se o cadastro existe se existir ele vai setar os valores nos getter e setter até ai funciona. Ai no final do codigo fecho o frame de login e abro o outro frame no outro frame eu preciso dos valores dos getter e setter porem faço a importação e os valores saem nulos alguem poderia me ajuda Codigo do outro frame
gscadcoo cad=new gscadcoo();
        System.out.println(cad.getNome());
Aqui no caso é o outro frame que abre após o login e nele o valor sai nulo

6 Respostas

Fexx

Porque está usando um cast no (PreparedStatement)?
Por acaso vc está usando o PreparedStatementdo seu Driver de Conexão?
Verifique seu import, e veja se está assim:

import com.mysql.jdbc.PreparedStatement;

Se for o caso mude para, o codigo.

import java.sql.PreparedStatement;

Tire o cast do:

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

E teste.

Boa sorte.

A

Mesmo assim ele continua nulo

thales_biolck

cara, olha bem o q vc fez ali.
vc acabou de criar um objeto e ja vai imprimir o nome… mas vc nao atribuiu nenhum valor a esse nome !

o nome q vc quer ta la metodo login da seu outro frame… que logo qdo vc sair do seu metodo, esse objeto c1 vai ser perdido…

uma das maneiras de vc resolver isso é retornar esse objeto c1 no metodo login… e nesse outro frame, vc recebe esse retorno… e imprime c1.getNome();

A

o primeiro codigo é uma classe da qual o frame logim faz a verificação se á ou não o cadastro
quando ter ele seta os valores.
depois abre outro frame que pega o valor dos getter e setter.
tirei o que vc falou de la mas não adiantou amigo

fsateles

Mano acho que isso resolve:

Você não está conseguindo pegar os resultados a partir do c1.get[i]Atributo/i, porque você está instanciando a variável de forma local (dentro do if) e ainda, não está criando um meio para receber esses dados no próximo frame.

A solução que eu proponho é tornar a variável c1 uma variável “global” dentro do método, e instanciá-la dentro do if somente para receber através dos sets os dados vindos do ResultSet, e passar através do construtor da classe do próximo frame (telacoordenador janela = new telacoordenador()) um parâmetro do mesmo tipo da variável que você usou para obter os resultados.

Agora funfa =D

Segue o código:

public void login(String nome, String senha) throws SQLException {
                // Essa variável está disponível para todo o metodo.
                gscadcoo c1;

		String sql = "select * from coordenadores where nome=? and senha=?";
		PreparedStatement stmt = conexao.prepareStatement(sql);
		stmt.setString(1, nome);
		stmt.setString(2, senha);
		
		ResultSet rs = stmt.executeQuery();
		
		if (rs.next() == false) {
			JOptionPane.showMessageDialog(null,"Usuario ou Senha incoretos ou não cadastrados");
		}
		
		if (rs.first() == true) {
			c1 = new gscadcoo();
			// Recomendo valores numéricos para o ID. Mas depende da aplicação.
			c1.setId(Long.valueOf(rs.getString("id")));
			c1.setNome(rs.getString("nome"));
			c1.setSenha(rs.getString("senha"));
			c1.setCurso(rs.getString("curso"));
			c1.setPeriodo(rs.getString("periodo"));
			System.out.println(c1.getNome());
		}
		
		rs.close();
		stmt.close();

		//Aqui o objeto c1 que contem as informações vindas do ResultSet é passada para o construtor do próximo frame
		telacoordenador janela = new telacoordenador(c1);
		janela.setLocationRelativeTo(null);
		janela.setVisible(true);
		
	}

O construtor da classe telacoordenado fica assim:

public class telacoordenador {
		
		private gscadcoo info;
		
		public telacoordenador(gscadcoo obj) {
			this.info = obj;
		}
		
	}

Agora os valores da variável c1 (que vc recebeu no último frame) estão na variável info (nesse novo frame) e você pode acessar os gets para pegar os valores.
Dá uma olhada no import que nem o Fexx disse.

Se tiver dúvida ou der erro é só falar =D

Espero ter ajudado.

A

Blz resolvido obrigado coloquei o metodo initcomponet dentro do construtor agora funciona blzinha vlw

Criado 19 de fevereiro de 2012
Ultima resposta 20 de fev. de 2012
Respostas 6
Participantes 4