Pessoal, tenho um ResultSet um pouco grande, e quando percorro ele com o while, depois de um certo registro, simplesmente trava (nao vai em erro, a aplicaçao continua rodando mas nao anda)
o codigo è simples:
privatestaticfinalStringsql="SELECT NUM_POLIZZA FROM DBA.TMP_QUALITA_INPUT_VITA";privatestaticResultSetrs=null;publicstaticvoidmain(String[]args)throwsIOException{con=getConnection();con.setAutoCommit(false);ps=con.prepareStatement(sql);rs=ps.executeQuery();con.commit();while(rs.next()){// numPolizze = rs.getString(1); // mesmo comentado ele trava quando tenta ir pro next, depois de uns 60 registros}...}
o resultado da query sao mais ou menos 32 mil linhas, mas de uma coluna sò
ele percorre uns 60 registros, e depois trava
Imprima a exception no console e poste aqui novamente, ok?
T
Theater
Meu còdigo jà està utilizando try catch… removi do exemplo apenas para ficar mais claro.
Esse que è o problema. Como eu escrevi anteriormente, ele nao vai em exceçao, fica processando quando chama o next() mas nao sai nunca mais dali.
Tiago
R
rodrigow
Opa,
então posta todo o código aqui, inclusive com o try e catch.
obrigado.
T
Theater
è isso ai o còdigo, com o try catch hehe
publicclassCaricaFlagPolizze{staticDriverdrive=null;staticConnectioncon=null;staticPreparedStatementps=null;privatestaticfinalStringsql="SELECT NUM_POLIZZA FROM DBA.TMP_QUALITA_INPUT_VITA";privatestaticResultSetrs=null;publicstaticvoidmain(String[]args)throwsIOException{try{StringnumPolizze=null;con=getConnection();con.setAutoCommit(false);try{ps=con.prepareStatement(sql);rs=ps.executeQuery();con.commit();}catch(OutOfMemoryErrorout){e.printStackTrace();}catch(Exceptiona){e.printStackTrace();}System.out.println("CONNECTED");System.out.println("LISTED");while(rs.next()){// numPolizze = rs.getString(1);}ps.close();con.close();System.out.println("Sucessful");}catch(SQLExceptione){e.printStackTrace();System.out.println("error");}}}
valeu!
F
filipechaves
qual drive tu usa? e para qual banco ele aponta?.. com o breaking point … ele chega no while? vem algum resultado com o getstring?
T
Theater
uso o driver “com.sybase.jdbc3.jdbc.SybDriver”, o banco se chama Sybase IQ
chega no while sim… itera umas 60 vezes, sempre trazendo resultado no getString… dai sempre depois desse registro, quando chama o next() ele trava… fica pendurado, antes de chamar o getString (atè comentei o getString pra ver se era o problema)
valeu
WRYEL
eu to com o mesmo problema, mas na verdade, eu não sei se estou no caminho certo
<%Mysqlmysql=newMysql();try{mysql.createPreparedStatement("SELECT ?, ?, ? FROM usuarios");mysql.statement.setString(1,"id");mysql.statement.setString(2,"user");mysql.statement.setString(3,"pass");ResultSetrs=mysql.statement.executeQuery();while(rs.next()){out.write(rs.getString("id"));}}catch(Exceptione){e.printStackTrace();}%>
o resultado ta sendo:
ididid
ps: pelo menos o numero de vezes no loop ta certo
só tem 3 linhas mesmo !
Alguma ideia ?
wag_ferreira
Qual é o tipo do seu campo que ta recebendo os valores do result??
String…Integer…???
T
Theater
WRYEL:
eu to com o mesmo problema, mas na verdade, eu não sei se estou no caminho certo
<%Mysqlmysql=newMysql();try{mysql.createPreparedStatement("SELECT ?, ?, ? FROM usuarios");mysql.statement.setString(1,"id");mysql.statement.setString(2,"user");mysql.statement.setString(3,"pass");ResultSetrs=mysql.statement.executeQuery();while(rs.next()){out.write(rs.getString("id"));}}catch(Exceptione){e.printStackTrace();}%>
o resultado ta sendo:
ididid
ps: pelo menos o numero de vezes no loop ta certo
só tem 3 linhas mesmo !
Alguma ideia ?
mas o teu itera atè o final entao?
o meu problema è diferente, congela durante o while…
wag_ferreira
Seguinte…
Se vc esta utilizando um integer…
Utilize LONG…poois pode estar estorando a tua variavel…
Ja aconteceu isto comigo
T
Theater
entendi, eu recebia em uma String, mas um por vez… mas no caso eu atè comentei, ou seja, nao estou atribuindo o resultado a nenhuma variavel, apenas iterando!