Basicao: pegando dados do banco e retornando

3 respostas
_fs

Oi, bom dia!

Vou ser mais conciso:

Após um SELECT * de um banco de dados com algumas colunas, como atribuir o valor de todas as linhas e colunas a um array bidimensional?

Estou tentando com isso:

try
		{
			ResultSetMetaData rsmd = rs.getMetaData();
			
			for( int i = 1; i <= rsmd.getColumnCount(); ++i )
				columnHeads.addElement( rsmd.getColumnName( i ) );
				
			do
			{
				rows.addElement( getNextRow( rs, rsmd ) );
			}while( rs.next() );
			
			tTable = new JTable( rows, columnHeads );
			JScrollPane scroller = new JScrollPane( tTable );
			
			getContentPane().add( scroller, BorderLayout.CENTER );
			
			validate();
		}

Onde ‘columnHeads’ e ‘rows’ são vectors.

Mas não está funcionando, alguém pode me dar uma mão?

3 Respostas

black_fire

Como diria o Jack o Estripador vamos por partes.

ao invés de usar o do {} while(), use o while(){}, uma vez que se a sua tabela estiver vazia, ele não executará a interação. com do {} while () poderá ocorrer erro se você estiver trabalhando com uma tabela que pode estar vazia…

while (rs.next()) {
// comandos que irão tratar o resultset
};

Se vc pretende jogar este resultset em um JTable é um pouco mais complexo. Mas para simplesmente retornar o valor tente assim:

Crie uma classe com os campos de sua consulta:

/*
-------------------------
Tabela clientes
-------------------------
IdCliente integer
Nome String(50)
-------------------------
*/

class Cliente {
	private int idCliente;
	private String nome;
	
	public int getIdCliente() {
		return this.idCliente;	
	}
	
	public void setIdCliente(int idCliente) {
		this.idCliente = idCliente;	
	}
	
	public String getNome() {
		return this.nome;	
	}
	
	public void setNome(String nome) {
		this.nome = nome;	
	}
}

Agora para vc atribuir e resgatar os valores.
Não use o Vector, pois é uma classe em desuso, use List.

ResultSet rs = null;
	List l = new ArrayList();
	
	public void gravaConsulta() {
		try {
			while (rs.next()) {
				Cliente c = new Cliente();
				c.setIdCliente(rs.getInt("IdCliente"));
				c.setNome(rs.getString("nome"));
				l.add(c); 
			}
		}
		catch (SQLException sqle) {}
	}
	
	public void resgatandoValores() {
		for (int i = 0; i < l.size(); i++) {
			Cliente c = (Cliente) l.get(i);
			System.out.println("Registro "+i);
			System.out.println("Código: "+c.getIdCliente());
			System.out.println("Nome: "+c.getNome());
			System.out.println("*********************");		
		}
	}

Um abraço kra, não deu pra comentar o código, que eu to ferrado de trampo aki, qualquer coisa vai postando ae…
Não testei… :oops:
Um abraço… :wink:

N

Lá vai:

Vector VLinhas = new Vector();

try
    {
      String SContasReceber = "SELECT * FROM TCONTAS_RECEB WHERE DATA_PAG = '"+TDataFech.getText().trim()+"'";

      Connection Con = DriverManager.getConnection(URL,"usuário","senha");
      Statement PSPesquisar = Con.createStatement();
      ResultSet RSResultado = PSPesquisar.executeQuery(SContasReceber);

while (rs.next())
{
VLinhas.addElement(RSResultado.getString("NUM_DUPL"));
VLinhas.addElement(RSResultado.getString("VALOR_COBRADO"));
}//while

PSPesquisar.close();
}//try
catch(SQLException ex)
    {
      JOptionPane.showMessageDialog(null,"Exceção SQL: 
"+ex.getMessage(),"Sistema JOL",JOptionPane.ERROR_MESSAGE);
      System.err.println("Exceção SQL: " + ex.getMessage());
    }//fim do catch
finally
{
Con.close();
}
_fs

Muito obrigado black_fire e neo :smiley: :smiley: :smiley:

Criado 11 de novembro de 2003
Ultima resposta 11 de nov. de 2003
Respostas 3
Participantes 3