Vao algumas dicas:
1. Melhore seus SQLs: fa�a o join de empresa com funcionario, por exemplo, pois vc estah criando um rset para cada funcionario sem necessidade. Desta forma vc vai melhorar tanto a performance a nivel de banco (SQL) quanto do Java (rset)
2.Verifique se os seus .close() estao *mesmo* sendo executados. A melhor forma de garantir isso eh colocando-os num bloco finally{}
3. Nao vi motivo para utilizacao de scrollable result sets. Crie-os da maneira "default" pois utilizam menos memoria e CPU quando processados.
Vc sabe tambem qual o processo que estah consumindo a memoria? (BD ou JVM)?
[]s
Maiko.
"Cl�udio_R._Lanzilotti" <[EMAIL PROTECTED]> escreveu:
Ola Pessoal, sou iniciante em Java e preciso de um help no uso do ResultSet......No c�digo abaixo estou tendo problemas de mem�ria no servidor de banco de dados, � o seguinte:- executo o programa na minha esta��o- no servidor fa�o o monitormanento de mem�ria pelo Task Manager e a mem�ria � consumida em quest�o de minutos, at� que a aplica��o � abortada....Fazendo alguns testes consegui resolver eliminando os 2 ResultSets rstAux que crio no terceiro loop...O fato � que seguindo exemplos de livros e do help consegui montar este programa, e na verdade n�o sei estou utilizando os componentes de forma correta, definindo nos lugares certos....Se algu�m puder ajudar agrade�o desde j�.......Servidor: Win2000 Server c/ SQL Server 2000Minha esta��o: Win2000 Pro + J2SDK 1.4.0Valeu !!Claudioimport java.io.*;
import java.net.*;
import java.sql.*;
import java.util.*;
import java.lang.reflect.Array;public class tsthelp
{
public static void main(String args[]) throws Exception
{
Properties prop = new Properties();
prop.put("user","HELP");
prop.put("password","HELP");
prop.put("serverVersion","Sql7");
String url = "jdbc:AvenirDriver://SERVIDOR:1433/HELPMIG";
Class.forName ("net.avenir.jdbc2.Driver");
Connection ctn= DriverManager.getConnection(url,prop);Statement stmtEven = ctn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
Statement stmtEmpr = ctn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
Statement stmtFunc = ctn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
Statement stmtAux = ctn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);ResultSet rstAux;strSQL = " SELECT CODIGOEVENTO, NOMEVENTO, TEMQTDE, TEMVALOR"
+ " FROM TB_EVENTO";
ResultSet rstEven = stmtEven.executeQuery(strSQL);
strSQL = " SELECT CODIGOEMPRESA, NOMEEMPRESA"
+ " WHERE TB_EMPRESA";
ResultSet rstEmpr = stmtEmpr.executeQuery(strSQL);while(rstEmpr.next())
{strSQL = " SELECT CODIGOFUNC, NOMEFUNC"
+ " FROM TB_FUNC"
+ " WHERE CODIGOEMPRESA = " + rstEmpr.getLong("CODIGOEMPRESA")
ResultSet rstFunc = stmtFunc.executeQuery(strSQL);while(rstFunc.next())
{strSQL = " SELECT CODIGOLANCTO, VALORLANCTO"
+ " FROM TB_LANCFUN"
+ " WHERE CODFUNC = " + rstFunc.getLong("CODFUNC")
ResultSet rstLanc = stmtLanc.executeQuery(strSQL);while( ! rstEven.next() )
{if ( rstEven.getString("TEMQTDE") == 'S' )
{
strSQL = " SELECT QTDE"
+ " FROM TB_VALQTDE"
+ " WHERE CODIGOFUNC = " + rstFunc.getLong("CODIGOFUNC");
rstAux = stmtAux.executeQuery(strSQL);rstAux.beforeFirst();
if ( rstAux.next() )
{
dblTotQtde += rstAux.getDouble("QTDE");
}
rstAux.close();
}if ( rstEven.getString("TEMVALOR") == 'S' )
{
strSQL = " SELECT VALOR"
+ " FROM TB_VALVALOR"
+ " WHERE CODIGOFUNC = " + rstFunc.getLong("CODIGOFUNC");
rstAux = stmtAux.executeQuery(strSQL);rstAux.beforeFirst();
if ( rstAux.next() )
{
dblTotQtde += rstAux.getDouble("VALOR");
}
rstAux.close();
}} // Evento} // Func} // EmprstmtFunc.close();
stmtEmpr.close();
stmtEven.close();
stmtAux.close();
}}
Yahoo! Encontros - O lugar certo para encontrar a sua alma g�mea.
