Erro sql

2 respostas
Starlya

Gente, estou tentando fazer duas consultas mais ou menos "simultâneas" numa mesma conexão, já criei statements diferentes e ele continua dando o mesmo erro de que o "ResultSet" não está corretamente posicionado, já conferi que todas as conexões/statamentes tbm estão sendo fechadas corretamente..

o que mais pode ser ?

Connection con;
        Statement stmt, stmt2;
        String query = "SELECT * FROM banco offset 10 limit 10"  ;
        
        
        try {
            Class.forName("org.postgresql.Driver");
            
        } catch(java.lang.ClassNotFoundException e) {
            System.err.print("ClassNotFoundException: ");
            System.err.println(e.getMessage());
        }
        
        try {
            
           
            con = DriverManager.getConnection("jdbc:postgresql://localhost:5432/"+banco,usuario,senha);
            
                    
            stmt = con.createStatement();
            
            
            ResultSet rs = stmt.executeQuery(query);
            
            
            
           
       ResultSetMetaData rsmd = rs.getMetaData();  
       int numColumns = rsmd.getColumnCount();  
     
       String[] lista_atributos= new String[numColumns];
       
       
      
      for (int i=1; i<numColumns; i++) {  
           String columnName = rsmd.getColumnName(i);  
           lista_atributos[i]=columnName;
       
              }

       int cont_pac=0;
            
            while (rs.next()) {
                
           Paciente pac= new Paciente();
           
                String hospital = rs.getString("hospital");
                pac.setHospital(hospital);
                String entrada= rs.getString("data_inter");
                String saida= rs.getString("data_saida");
                pac.setEntrada(entrada);
                pac.setSaida(saida);
                
                String tipo=rs.getString("cat_int");
                String query2="SELECT tipo FROM categoria WHERE codigo=\'"+tipo+"\'";
            
                stmt2 = con.createStatement();
                ResultSet rs2 = stmt2.executeQuery(query2);
                
                String tipo1=rs2.getString("tipo");
                
                if(tipo1=="tipo1"){
                pac.setTipo(1);
                
                }else if(tipo1=="tipo2"){
                
                pac.setTipo(2);
                
                }
                
                rs2.close();
                stmt2.close();                 
               
                
           
            }
            
            rs.close();
            
            stmt.close();
            con.close();
            
            
        } 
       
       
       catch(SQLException ex) {
            System.err.println("SQLException: " + ex.getMessage());
        }

2 Respostas

_fs

Olá Starlya,

Creio que o erro aponta para a linha onde faz

String tipo1=rs2.getString("tipo");

certo? Se sim, chame rs2.next() antes.

E alguns apontamentos:

  1. Ao postar código, coloque-o entre as tags [ code]seucódigo[ /code], assim ele fica identado.
  2. Ao ocorrer um erro em seu código, sempre poste junto o stack trace da exceção, o que me leva ao próximo ponto…
  3. Nunca nunca faça isso
System.err.println("SQLException: " + ex.getMessage());

Normalmente o que é impresso não ajuda tanto quanto

ex.printStackTrace();

Teste você mesma e veja a diferença.

Starlya

EDIT

ah jah entendi…

vou tentar aqui…

muito obrigada pelas dicas …

EDIT 2: funcionou direitinho, muito obrigada…

Criado 6 de abril de 2008
Ultima resposta 7 de abr. de 2008
Respostas 2
Participantes 2