Popular JTable em tempo de execução

4 respostas
criador

Bom dia.
Estou realizando uma consulta no meu banco de dados Oracle, em uma tabela que tem aproximadamente 100.000 linhas.

Preciso que a cada 10 linhas (exemplo) retornadas do meu select, a tabela crie estas 10 linhas com os respectivos dados recebidos.

Por que isso?
Porque não consigo guardar todas as linhas retornadas do select para depois popular a tabela. Não consigo porque estoura a exceção “Java heap space”.
Acredito que se eu locar mais espaço para a minha JVM o problema não aconteça, porém isto seria uma solução temporária.

Resumindo: Preciso que a cada 10 linhas, por exemplo, que o banco me retorne, a tabela seja populada.

Se há alguma implicação nisto, ou não é a melhor forma de implementação neste caso, deixem suas considerações.

Espero ter sido claro.
Agradeço desde já.

Abraço!

4 Respostas

thiago_spdvr

Vc ja avaliou todas as possibilidades de vc não precisar trazer esse 100.000 registros por select ?

Como vc armazena os resultados do select ?

Da uma olhada em paginação:
http://www.mhavila.com.br/topicos/bd/ora_rownum.html

criador

Estou percorrendo todas as linhas encontradas no select e armazenando em um ArrayList.
Desta forma:

ArrayList<TABELA> tab = new ArrayList<TABELA>();

while (result_set.next())
{
        tab.add(new TABELA(result_set.getString("Coluna1"), result_set.getString("Coluna2")));
}

Com isso, cada posição do meu array terá uma estrutura TABELA alimentada com o valor de cada coluna.

Abraço!

criador

Quero fazer com que TODAS as linhas retornadas da consulta, sejam mostradas na tabela.

Ou seja, se a consulta me retornou 99.000 linhas, a minha tabela terá 99.000 linhas.

Mas quero que estas linhas vindas da consulta, venham em blocos por exemplo de 10 linhas por vez.

Então, a cada 10 linhas retornadas da consulta, são mostradas 10 linhas na minha tabela de visualização na aplicação.
Logo em seguida, mais 10 linhas são retornadas da consulta e mais 10 linhas são mkostradas na minha tabela de visualização na aplicação.

Ficará fazendo isso até atingir a minha linha de número 99.000

Não sei se fui claro!

Abraço!

M

criador:
Quero fazer com que TODAS as linhas retornadas da consulta, sejam mostradas na tabela.

Ou seja, se a consulta me retornou 99.000 linhas, a minha tabela terá 99.000 linhas.


Para tanto você precisaria alocar os 100 mil registros na memória, o que lançaria uma erro.

criador:
Mas quero que estas linhas vindas da consulta, venham em blocos por exemplo de 10 linhas por vez.

Então, a cada 10 linhas retornadas da consulta, são mostradas 10 linhas na minha tabela de visualização na aplicação.

Logo em seguida, mais 10 linhas são retornadas da consulta e mais 10 linhas são mkostradas na minha tabela de visualização na aplicação.


Esse é o princípio de paginação. Agora pense: se você vai mostrar apenas 10 registros para que fazer um select dos 100 mil? Faça selects e vá usando o comando SQL “LIMIT” em cada um deles. Ou seja: selecione os 10 primeiros e mostre. Depois, caso o usuário clique no botão próximo, selecione os próximos 10 e mostre e assim por diante.

Criado 14 de abril de 2010
Ultima resposta 14 de abr. de 2010
Respostas 4
Participantes 3