Como retornar um String[]?

8 respostas
H

Galerinha, é o seguinte..

Tenho um método no qual passo um parâmetro para busca em Banco de dados.
O resultado dessa busca, vou guardando em uma String[].

O problema é que não consigo retornar o valor dela. Dá o erro dizendo que está apontando para null.
O código simplificado:

public static String[] ConsultaEmpresa(String empresa) throws SQLException{
 		 
        String retorno[]  =null;
        int i = 0;
			while(Resultados.next())
			{
				retorno[i]=Resultados.getString(1).trim();
				i++;
				retorno[i]=Resultados.getString(2).trim();
				i++;
				retorno[i]=Resultados.getString(3).trim();
				i++;
				retorno[i]=Resultados.getString(4).trim();
				i++;
return retorno;
					
			}

Espero que alguém me ajude! Desde já obrigado! :grin:

8 Respostas

B

Ola

A priori ta tudo certo, mas parece que o Resultado, que julgo ser da sua query, nao retornou nada… coloque um System.out.println dentro do seu while… pra ver se ta trazendo alguma coisa…

B

Foi mal… agora que vi o erro… :mad:

O problema e que vc nao instancio o array… ae da NullPointerExcption…

H

Cara, acho que entendi o erro.
Primeiro, estava declarando:
String retorno[];

O correto seria:
String[] retorno;

Mas mexi aqui e não deu certo… O Resultado retorna valores do banco sim…

Tem como me explicar melhor??? Valew…
Acho que mexi tanto com isso hoje, que já esgotou os neurônios do dia… :roll:

B

Ola

Em java, quando vc declara um array vc tem que instancia-lo para poder usa-lo, tipo:

String[] args = new String[10];

Assim vc cria um array com 10 posicoes para usar, sendo que nao sao 10 strings, e sim dez posicoes para alocar uma string.
Entao, no seu codigo, quando vc declara a string, diz que havera um array de strings, mas nao o instanciou… isto que esta causando o erro.

O problema de fazer isto com array de string e que no caso do java.sql.ResultSet vc nao sabe previamente quantas linhas foram retornadas… entao nao tem como vc instanciar o array e garantir que cabera todos os resultados…

Eu aconselho vc a usar um java.util.ArrayList, que e uma lista alocada dinamicamente.

H

Ufa…

Cara, salvou o dia…
Eu já tinha usado isso mas não lembrava de jeito nenhum…
Agora deu certo!!

Quanto retorno os dados da consulta, algumas eu consigo saber quantos valores serão retornado, assim não vou ter problema. Mas vou tentar verificar a quantidade de valores retornados da Query, assim eu consigo instanciar esse vetor com diferentes valores em tempo de execução.

Muito obrigado mesmo!
Abraço!

B

Ola,

Mas tem um metodo, toArray, que te retorna um array do list, nao precisa tentar descobrir… pode trabalhar com o ArrayList dentro do metodo ehora de retornar chamar o toArray() que ele vai te dar um array… pq descobrir previamente a quantidade de resultados que tem no ResultSet tem que fazer uma gambiarra danada…

E so pra complementar mais ainda… a um serio problema com o metodo toArray que nao recebe parametros… ele nao aceita um cast, assim vc usa o toArray e passa um o tamanho do list, assim:

String[] arg = new String[list.size()]); myList.toArray(arg); return arg;
e pronto, vc tem o array de String…

H

Valew!! Vou testar com certeza!
Obrigado!

Opa!!! Testado e aprovado!!

R

Só lembrando que isso tem o mesmo efeito, os dois estão corretos.

Primeiro, estava declarando:
String retorno[];

O correto seria:
String[] retorno;
Criado 24 de agosto de 2006
Ultima resposta 24 de ago. de 2006
Respostas 8
Participantes 3