Problema Com ResultSet

Tipo to fazendo um sistema desktop pra empresa aki…

Mas to com 1 problema.
Assim tenho um FuncionarioDAO, e uma outra main.

Ai tem o metodo la no Dao blz com resultset ta rodando certo…

Mas eu preciso fazer akeles botoes q passam os registros pra la e pra ca.
pra fazer isso eu preciso do resultset so q ele ta la no DAO.

Como eu posso fazer pra manipular esses dados sendo q o resultSet n ta nessa classe Main?
eu tenho um q eu fiz a mto tempo mas era tudo numa classe ai eu criava o result no construtor ai funciona d boas, mas agora com esse resultset la no Dao, como vo poder manipular os dados dele em outra classe?

se alguem puder me ajudar agradeço mto pq sei la o q eu faço =D

o metodo la no DAO
public List<Funcionario> TrazerFuncionario() throws SQLException{
		String sql = "Select * From Funcionario";
		PreparedStatement ps = c.prepareStatement(sql);
		ResultSet rs = ps.executeQuery();
		
		List<Funcionario> lista = new ArrayList<Funcionario>();
		
		if(rs.next()){
			Funcionario func = new Funcionario();
			func.setNome(rs.getString("fun_nome"));
			lista.add(func);
		}
		rs.close();
		ps.close();
		
		return lista;
	}

e o codigo da Main

public void SetData(){
		
		List<Funcionario> myList = new ArrayList<Funcionario>();
		try{
		FuncionarioDAO fdao = new FuncionarioDAO();
		myList = fdao.TrazerFuncionario();
		
		for(Funcionario f : myList){
		txtNome.setText(f.getNome());		
                           } 
		}
		
		catch (SQLException e) {
			e.printStackTrace();
		}
	}

Tipo da pra pegar os dados desse resultset do Dao pra eu poder usar ele na classe main?

pelo que eu entendi, você quer fazer “paginação” para exibir o resultado da consulta.
por exemplo, definir que o número de registros exibidos por página seria 10.

nesse caso, é melhor você usar a List em vez do ResultSet.
List tem o método size() que retorna o número de elementos. Se for usar o ResultSet, teria que criar um contador.
Sem contar que dessa forma você não misturaria a classe que trata da exibição com a classe que acessa o banco de dados.

Hum tipo é assim…

N eh Bem paginação…
eh assim eu ia mostrar os dados em Jtable ja tinha feito mas minha chef num kis ¬¬…

ai eu vo ter q fazer aparecer os dados em algo parecido com a tela de cadastro certo.
é a movimentação dos registros que eu to falando. com os botoes < >.

pra fazer isso pelo menos do jeito q eu conheço e so usar os metodos next,previous do resultset.

porem eu n tneho como acessar esses metodos pq nessa classe main eu n enxergo o resultset do DAO.

continuo achando que é paginação, mas de apenas um registro por página :slight_smile:

o seu DAO já cumpriu o papel dele que é acessar a base de dados e retornar o resultado da sua consulta. Pronto!

pra trabalhar na camada de controle e visão, o melhor é trabalhar com os métodos da List.
por exemplo, o método get(int i) retorna o elemento que está na posição i.
dessa forma, ao clicar no botão de avançar ou retonar você controla o valor do “i” e exibe o registro posterior(i +1) ou anterior (i-1).

[quote=colored] …
eh assim eu ia mostrar os dados em Jtable ja tinha feito mas minha chef num kis …
…[/quote]

Voce mostrava estes funcionarios na JTable como ?
Um jeito simples de resolver isso, seria retornar os funcionarios do Dao num List, desta maneira fica muito simples implementar os botoes de navegacao que deseja, pois somente manipulara os indices.

obs1: Estou sem acentos no momento …
obs2: Sem querer ser chato, mas ja sendo, voce pode “caprichar” mais no texto ? Do jeito que voce escreve nao passa uma imagem legal … e uma recomendacao somente, sem ofensas. 8)

Caso nao consiga implementar, coloque o codigo que fez (da nova tentativa), que ajudaremos.

Sucesso!
Roger Leite

entao finotti…

mas vc tem um exemplo mais o menos pra eu ver como eh… pq nem sei como começar usando os metodos da List…

colored, a idéia é a mesma dos métodos next() e previous() do ResultSet.
eu faria mais ou menos assim:

public FuncionarioVO nextFuncionario(List listaFuncionarios, int i) {
  FuncionarioVO funcionario = listaFuncionarios.get(i+1);
  return funcionario;
}

esse método recebe a lista completa de funcionarios e o índice do elemento que está exibido na tela… pra exibir o próximo, basta acrescentar 1 ao índice, popular o bean com os novos atributos e renderizar a tela novamente.

public FuncionarioVO previousFuncionario(List listaFuncionarios, int i) {
  FuncionarioVO funcionario = listaFuncionarios.get(i-1);
  return funcionario;
}

e faça o mesmo com o método pra visualizar o funcionário anterior.

você chamaria esses métodos com o evento de clique nos botões <>.