----- 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();
}
}