Erro: Consulta só retorna o ultimo registro!

Faço esta consulta e mando por cada campo em cada posiçao de um array e cada array em uma posição do vector, mas todos os arrays mostram os dados da ultima linha. Pq?

public Vector listarTurma() { int[] alelo = new int[3]; Vector dados = new Vector(); try { String sql = "select CodTurma, Disciplina, Turno, Carga from Turma"; Statement s = this.can.createStatement(); ResultSet rs = s.executeQuery(sql); String x = ""; String y =""; while(rs.next()) { alelo[0] = rs.getInt(1); x = ""+rs.getInt(2); y = ""+rs.getInt(3); alelo[1] = Integer.parseInt(x+y); alelo[2] = rs.getInt(4); dados.add(alelo); } } catch(Exception e) { System.out.println("Erro listarTurma: " + e); } return dados; }

Eu acho que é melhor vc criar uma classe Turma e usar List

Quem souber por favor responda corretamente o q eu peço!

ah… tenta criar instancias diferentes do array alelo. :slight_smile:

vc está criando apenas 1 instância e jogando os valores. o que acontece é que os valores vão sendo sobrescritos e você fica só com o último valor :slight_smile:

joga o int[] alelo = new int[3]; para dentro do while(rs.next())

Bom dia carllacj,

Experimente rodar o código desta forma

public Vector listarTurma()  
{  
	int[] alelo;   
	Vector dados = new Vector();  
	try  
	{  
		String sql = "select CodTurma, Disciplina, Turno, Carga from Turma";   
		Statement s = this.can.createStatement();   
		ResultSet rs = s.executeQuery(sql);   
		String x = ""; String y ="";   
		while(rs.next())  
		{  
			alelo = new int[3];
			alelo[0] = rs.getInt(1);   
			x = ""+rs.getInt(2);  
			y = ""+rs.getInt(3);  
			alelo[1] = Integer.parseInt(x+y);  
			alelo[2] = rs.getInt(4);   
			dados.add(alelo);   
		}  
	}  
	catch(Exception e)  
	{  
		System.out.println("Erro listarTurma: " + e);  
	}  
	return dados;  
}

Desta forma você manterá apenas um vetor em memória e somente irá atualizar sua referênca dentro do Vector. Qualquer coisa coloque o problema novamente.

Abraços