----- Original Message -----
Sent: Wednesday, July 24, 2002 9:31
AM
Subject: [java-list] Resultset consumindo
mem�ria
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
2000
Minha esta��o: Win2000 Pro + J2SDK
1.4.0
Valeu !!
Claudio
import 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
} // Empr
stmtFunc.close();
stmtEmpr.close();
stmtEven.close();
stmtAux.close();
}
}