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

Responder a