Bom preciso saber como calcular o tamanho máximo que um ResultSet pode aguentar… alguém sabe? Preciso disso pois em base disso eu pegar de pouco em pouco os meus dados, visto que meu banco de dados é MUITO volumoso. Sei lá algum calculo comparando o tamanho da tabela do banco e o máximo de memória alocada para o programa para não dar estouro de memória… por favor alguém sabe?
Obrigado
Não precisa se preocupar, pois o JDBC não faz o fetch dos dados de uma única vez. Você pode obter esse número com o método getFetchSize() da interface Statement. Ela te retorna o máximo de linhas que são trazidos do banco de uma única vez.
A
anderson_lp789
certo e daih como eu faço para eu pegar os dados? poderia postar algum exemplo? não entendi muito bem como isso me ajudaria na prática
rmendes08
É só usar o JDBC normalmente. Você obtêm um Statement da conexão (geralmente um PreparedStatement) passando a query, executa o Statement obtendo o ResultSet e navega através dele com next().
A
anderson_lp789
então quer dizer que mesmo uma consulta que me retorna milhões de linhas, o resultset vai aguentar? :?:
A
Astork
Há necessidade de trabalhar com esta quantidade de volume de dados? Não vai ter gargalos e muito trafego na rede?
Att
A
anderson_lp789
Astork:
Há necessidade de trabalhar com esta quantidade de volume de dados? Não vai ter gargalos e muito trafego na rede?
Att
preciso sim… meu banco de dados é do tipo volumosos mesmo. A minha preocupação era se o resultset iria aguentar. Obrigado
drigo.angelo
Tem um jeito, não é exatamente muito “bonito” mas já ajuda a fazer paginação, e buscar os dados por blocos…
tipo assim, tem uma função em SQL count(coluna) em que coluna é o nome da coluna mesmo, mas para esse fim o pessoal utiliza SELECT COUNT(*) + FROM tabelas WHERE condições, de modo a retornar a quantidades de resultados retornados pela sua consulta, daí depois você faz a paginação com limit e offset.
Como eu disse deve haver uma forma mais “bonita” de fazer isso, talvez até algum framework/tecnologia/api que implemente isso, mas eu ainda não conheço, faço na mão mesmo…
Pelo que eu entendi é mais ou menos isso que você quer, agora se alguém conhecer uma forma melhor de fazer isso…