Problemas com o ResultSet

5 respostas
andresmafra

Ola, quando tento passar para o poximo resgistro do banco, ele nao passa, sempre fica no primeiro!

qual eh meu erro? Sera que estou usando o mesmo Resul set 'rs' diversas vezes?

aguardo!

try
    {
       rs = comandos.executeQuery("SELECT ID_OBRA, ID_AUTOR, TOMBO, TITULO, QUANTIDADE, DTA_AQUISICAO, LOCALIZACAO, TIPO, ISBN, EDITORA, DTA_CRIACAO, PRODUTORA, ATOR_PRINCIPAL, DURACAO, GENERO FROM BIBLIOTECA_OBRA");
       boolean res = rs.next();
       if(res)
       {
                 
                tombo.setEditable(false);
                titulo.setEditable(false);
                quantidade.setEditable(false);
                dataaquisicao1.setEditable(false);
                localizacao.setEditable(false);
                isbn.setEditable(false);
                editora.setEditable(false);
                datacriacao.setEditable(false);
                genero.setEditable(false);
                getautores.setEditable(false);
                atorprincipal.setEditable(false);
                duracao.setEditable(false);
                produtora.setEditable(false); 
                
                //Atualiza com o banco de dados
                String a = rs.getString("ID_OBRA");
                codigo.setText(rs.getString("ID_OBRA"));
                tombo.setText(rs.getString("TOMBO"));
                titulo.setText(rs.getString("TITULO")); 
                quantidade.setText(rs.getString("QUANTIDADE")); 
                dataaquisicao1.setText(rs.getString("DTA_AQUISICAO"));
                localizacao.setText(rs.getString("LOCALIZACAO")); 
                if(rs.getString("TIPO").equals("F"))
                  tipo.setSelectedIndex(1);
                else
                  tipo.setSelectedIndex(2); 
               isbn.setText(rs.getString("ISBN"));
               editora.setText(rs.getString("EDITORA")); 
               datacriacao.setText(rs.getString("DTA_CRIACAO")); 
               produtora.setText(rs.getString("PRODUTORA")); 
               atorprincipal.setText(rs.getString("ATOR_PRINCIPAL"));                 
               duracao.setText(rs.getString("DURACAO")); 
               genero.setText(rs.getString("GENERO")); 
               //Atualiza o combo box
                try
                {
                   String get = "SELECT O.ID_OBRA,A.NOME FROM BIBLIOTECA_OBRA O JOIN BIBLIOTECA_AUTOR A ON (O.ID_AUTOR = A.ID_AUTOR) WHERE O.ID_OBRA ="+a;
                   rs = comandos.executeQuery(get);
                   boolean resp = rs.next();
                   if(resp)
                   {
                       String nome = rs.getString("NOME");
                       for(int i=1;i<getautores.getItemCount();i++)
                       {
                           String item = getautores.getItemAt(i).toString();
                           if(nome.equals(item))
                           {
                               getautores.setSelectedItem(nome);
                           }
                       }
                   }
                }
                catch(SQLException ex)
                {
                   ex.printStackTrace();
                   JOptionPane.showMessageDialog(this,ex);
                }
       }
       else
       {
           JOptionPane.showMessageDialog(this,"Não  mais dados!","Fim",JOptionPane.INFORMATION_MESSAGE);
           rs.last();
       }
       //atualiza o form
                tombo.setEditable(false);
                titulo.setEditable(false);
                quantidade.setEditable(false);
                dataaquisicao1.setEditable(false);
                localizacao.setEditable(false);
                isbn.setEditable(false);
                editora.setEditable(false);
                datacriacao.setEditable(false);
                genero.setEditable(false);
                getautores.setEnabled(false);
                atorprincipal.setEditable(false);
                duracao.setEditable(false);
                produtora.setEditable(false); 
           
    }
    catch(SQLException ex)
    {
       JOptionPane.showMessageDialog(this,"Problemas no comando SQL: "+ex,"ERRO!",JOptionPane.ERROR_MESSAGE);  
    }

5 Respostas

diogofabri

Tente desta forma:

# PreparedStatement stmt = null;  
# ResultSet rs = null;  
#   
# String sql = "select * from " + this.logicSQL.getCurrentTable();  
#   
# try {  
#     stmt = this.(FUNCAO QUE CONECTA NO BANCO).prepareStatement(sql);  
#     rs = stmt.executeQuery();  
#               
#    if (rs.next()) {  
#   
#         rs.getString("nome"));  
#         rs.getString("login"));               
#           
#     }  
#     stmt.close();  
#       
#   
# } catch (SQLException e) {    
#     e.printStackTrace();  
#       
# }

Recomento pegar os resultados do banco e armazenar em um array list, e depois sim fazer a atualização no ComboBox.
Alterando o IF por While.

Espero ter ajudado.
Abraço

andresmafra

ok, vou tentar, mas para que serve a ultima instrução desta select?

String sql = "select * from " + this.logicSQL.getCurrentTable();
andresmafra

Amigo, deu err quando usei esta instrução do slect qual sera o problema?

ABÇ!

diogofabri

Desculpe, esqueci de explicar essa linha.
Você pode fazer um método setando e pegando o nome da tabela, por exemplo:

public String getCurrentTable() {
		return currentTable;
	}

	public void setCurrentTable(String currentTable) {
		this.currentTable = currentTable;
	}

Seria importante utilizar isso, pois na conexao ao banco poderia ser necessario indicar o nome da table,exemplo:

public acess_db(String hostName, String hostLogin, String hostPassword, String currentTable)

Mas se não quizesse fazer desse modo, basta substituir o método getCurrentTable() , pelo nome da sua Tabela no Banco.

andresmafra

Ok, obrigado amigo, eu consegui resolve este problema do combo, mas agora eu tenho um botão “proximo”, e era pra mostrar os proximos dados do banco na tela, mas ele diz que a coluna não existe.
Acho que o problema é com o RS ainda.

Como posso resolver isso?

Aguardo!

Criado 16 de novembro de 2008
Ultima resposta 20 de nov. de 2008
Respostas 5
Participantes 2