String[] - Alguma restrição? [Resolvido]

5 respostas
KaosBr

Boa noite,

Estou preparando, um metodo para, armazenar uma lista de nomes de colunas. Esses nomes serão, adquiridos, a partir de um ResultSetMetaData. A principio, pensei em declarar essa variavel assim:

private String[] nomeDasColunas;

A algum problema quanto ao tipo e a forma que vou armazenar essas informações?

[]s

5 Respostas

renamed

Eu prefiro utilizar List.
Veja a seguinte situação.

public static String[] exemplo() throws SQLException{
		ResultSet res = null;
		String[] vColunas = new String[10]; //máximo 10 colunas
		/*
		 * Código aqui
		 */
		int i = 0;
		while(res.next()){
			vColunas[i] = res.getString("coluna");
			i++;
		}
		
		return vColunas;
	}
	
	public static void main(String[] args) throws SQLException {
		String[] colunas = exemplo();
		
		/*
		 * Lembrando que teremos, NO MÁXIMO, 10 colunas.
		 * Mas e se vierem menos que 10?
		 */
		
		for(String a : colunas){
			System.out.println(a);
		}
	}

Resultado obtido:

a
b
b
b
null //Só existem 4 objetos, os restantes serão nulos.
null
null
null
null
null

A interface list não permite que isso ocorra:

public static List<String> exemplo() throws SQLException{
		ResultSet res = null;
		List<String> retorno = new ArrayList<String>();
		/*
		 * Código aqui
		 */
		
		while(res.next()){
			retorno.add(res.getString("coluna"));		
		}

		
		return retorno;
	}
	
	public static void main(String[] args) throws SQLException {
		List<String> colunas = exemplo();
		
		/*
		 * Lembrando que teremos, NO MÁXIMO, 10 colunas.
		 * Mas e se vierem menos que 10?
		 */
		
		for(String a : colunas){
			System.out.println(a);
		}
	}

Resultado obtido:

a
b
b
b

ok?

Marky.Vasconcelos

Uma List seria mais legal. E se voce pensasse mais OO poderiam ser objetos que sabem o nome da coluna e o que fazer com o dado correspondente.
O que voce vai implementar?

KaosBr

Boa tarde,

O ArrayList é realmente a melhor opção, renamed, vou trabalhar com ele. :slight_smile: vlw

Acho que entendi, Marky.Vasconcelos, o ideal é que eu crie classes para as tabelas. E manipular, as informações, em um ArrayList criado com base nessa classe. É isso mesmo?

O que pretendo fazer é, listar todos os nomes das colunas, e campos com seus respectivos dados.

Obrigado pela ajuda até o momento.

[]s

Marky.Vasconcelos

É isso mesmo.

Por exemplo voce teria a interface coluna que teria os metodos getName e getValue(T obj). Sendo T o objeto em comum das colunas, essa classe sera responsavel por ter o nome da tabela e ainda pode invocar o metodo getValue com o objeto que voce tera o dado certo da coluna de acordo com o objeto.

KaosBr

Show de bola, vou trabalhar dessa forma, muito obrigado pela ajuda. :slight_smile:

[]s

Criado 7 de julho de 2010
Ultima resposta 8 de jul. de 2010
Respostas 5
Participantes 3