Retornar dados de uma database num array

4 respostas
VictorMatuk

Como faço pra retornar todas as linhas e colunas de uma consulta em um array?
exemplo:

query = "SELECT * FROM dados";

consultaDB(query);

public static String[] consultaDB(String query) {
		String[] dados = new String[100];
		dados[0] = "Selecione";

		try {
			Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

			Connection con = DriverManager.getConnection(conexao, login, senha);
			Statement stmt = con.createStatement();
			ResultSet rs = stmt.executeQuery(query);
			ResultSetMetaData rsmd = rs.getMetaData();
			
			
			while (rs.next())
				for (int i = 1; i <= rsmd.getColumnCount(); i++){
					dados[i] = rs.getString(rsmd.getColumnLabel(i));
					System.out.println("Dados[" + i + "]: " + dados[i]);
				}

			stmt.close();
			con.close();

		} catch (Exception e) {
			System.out.println(e);
		}
		return dados;
	}

E a tabela

dados
nome
victor
alex

O problema é que quando eu quero retornar todos os valores, eles ficam armazenados um em cima do outro
tipo
dados[i] = victor
dados[i+1] = alex

e o se eu der
for(int ...)
System.out.println(dados[i]);
ele so me mostra o ultimo registro
exemplo
syso -> alex

4 Respostas

abelgomes

veja bem, vc tem um for dentro de while. Para cada iteraçãod o seu while ele vai refazer tudo no for :wink:

usa um arraylist assim

ArrayList lista= new ArrayList()

lista.add(seuResultSet.getColuna());

já era…todos os dados da tabela

VictorMatuk

eu tinha que fazer isso com String[] pois estou usando JComboBox e ele só aceita String[] e não deu pra fazer com ArrayList

String[] referencias = consultaDB(“SELECT * FROM material”);

private JComboBox referencia = new JComboBox(referencias);

G

cara posso lhe dar uma dica?
de uma olhada em pool de conexao de uma olhada em mvc, e tente criar uma classe dados com os atributos de dados ai dentro do while voce vai incrementar esse objeto dados e vai adicionar ao arrayList por que essa incrementaçao com String ai ta muito feia e vai dar erro.

G

pra te ajuda posso tentar uma coisa aqui, mas vou dizendo que eu to sem programar tem uns 6 meses acompanho o forum aqui por que eu realmente gosto de java e fico vendo o q ta rolando, mas a classe de pool de conexões tem que ser uma classe singleton e voce tem q fazer o padrao de projeto DAO vo te dar alguns exemplos

Ps: lembrando que eu nao tenho IDE aqui o acesso a internet aqui no meu serviço é muito limitado.

public class PoolConnection{
private static PoolConnection instance;
private string url = ......;
private string user = ...;
private string pass = ....;

private PoolConnection (){
Connection....
}

public static PoolConnection getInstance(){
if (instance = null){
intance = private PoolConnection();
}else
return intance;
}
}

tem varios erros pois nao me lembro msm mas pro c pegar a conexao vc vai ter que ir na classe DAO que voce criar por exemplo DadosDAO e dar um PoolConnection.getInstance.getConnection(); get connection vai ter q ser outro metodo que voce vai ter que criar. mas é so pra vc ter uma ideia msm

Criado 16 de agosto de 2010
Ultima resposta 16 de ago. de 2010
Respostas 4
Participantes 3