Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Ferreira27

Java ResultSet não posicionado corretamente

Recommended Posts

Alguém pode me ajudar com esse código 

Estou com problemas  com esta mensagem:"org.postgresql.util.PSQLException: ResultSet não está posicionado corretamente, talvez você precise chamar next"  ao  salvar no banco de dados o formulário e também ao preencher o ArrayList 

Consigo salvar os dados no banco  esse erro apareceu depois que implementei o código da função AchaTelefone

Esse sistema estou fazendo assistindo essas vídeo aula  

 

https://www.youtube.com/watch?v=1lnf4ZRDduw&t=7s

https://www.youtube.com/watch?v=yjDmlIRzF94

https://www.youtube.com/watch?v=wLC3UGKKlYI&t=399s

https://www.youtube.com/watch?v=_Zzaq5QMpIY&t=37s

https://www.youtube.com/watch?v=h1t7uG-f-8c

 

Código para Salvar 

public class ControleFornecedor {

    ModeloFornecedor mod = new ModeloFornecedor();
    ConectaBanco conn = new ConectaBanco();
    ConectaBanco connAux = new ConectaBanco();
    int codBairro, codTel;

    public void Salvar(ModeloFornecedor mod) {
        AchaBairro(mod.getBairro());
        AchaTelefone(mod.getTelefone());
        conn.conexao();
        try {
            PreparedStatement pst = conn.conn.prepareStatement("insert into fornecedores(nome_fornecedor, endereco,id_bairro,cnpj_fornecedor) values(?,?,?,?)");
            pst.setString(1, mod.getNome());
            pst.setString(2, mod.getEndereco());
            pst.setInt(3, codBairro);
            pst.setString(4, mod.getCNPJ());

public void AchaBairro(String bairro) {
        conn.conexao();
        try {
            conn.executaSQL("select * from bairro where nome_bairro='" + bairro + "'");
            /*conn.executaSQL("select * from bairro where nome_bairro='" + mod.getBairro()+ "'");*/
            conn.rs.first();
            codBairro = conn.rs.getInt("id_bairro");
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, "Erro ao buscar codigo do bairro! \nErro:" + ex);
        }
        //conn.desconecta();
    }
    
    public void AchaTelefone(String telefone){
    
        try {
            conn.executaSQL("select * from telefone where numero_tel='" + telefone + "'");
            conn.rs.first();

            codTel = conn.rs.getInt("id_telefone");
        } catch (SQLException ex) {

        }
            
            pst.execute();
            
            /*atualiza a tabela intens_tel_forn*/
            conn.executaSQL("select * from  telefone where numero_tel='" +mod.getTelefone()+" ' ");
            conn.rs.first();
            codTel = conn.rs.getInt("id_telefone");

            conn.executaSQL("select * from fornecedores where nome_fornecedor='" + mod.getNome() + " ' ");

            conn.rs.first();
            int codForn = conn.rs.getInt("id_fornecedor");
            pst = conn.conn.prepareStatement("insert into intens_tel_for(id_fornecedor, id_te) values(?,?)");
            pst.setInt(1, codTel);
            pst.execute();
            JOptionPane.showMessageDialog(null, "Dados inseridos com sucesso!");

        } catch (SQLException ex) {
            //Logger.getLogger(ControleFornecedor.class.getName().log(Level.SEVERE, null, ex);
            JOptionPane.showMessageDialog(null, "Erro na inserção do fornecedor! \nErro:" + ex);

        }
        conn.desconecta();
    }

Código do formulário

public class FrmFornecedor extends javax.swing.JFrame {
      
    ConectaBanco conn = new ConectaBanco();
    ModeloFornecedor mod = new ModeloFornecedor();
    ControleFornecedor control = new ControleFornecedor ();
    
   int muda = 1;

    
    public FrmFornecedor() {
        initComponents();
        preencherCombo();
        conn.conexao();
        
        preencherTabela("select * from fornecedores inner join intens_tel_forn on fornecedores.id_fornecedor=intens_tel_forn.id_fornecedor inner join telefone on intens_tel_forn.id_te=telefone.id_telefone");


private void jButtonSalvarActionPerformed(java.awt.event.ActionEvent evt) {                                              
        // TODO add your handling code here:
        if(muda==1){
        mod.setNome(jTextFieldNome.getText());
        mod.setEndereco(jTextFieldEnd.getText());
        mod.setCNPJ(jFormattedTextFieldCNPJ.getText());
        mod.setBairro((String) jComboBoxBairro.getSelectedItem());
        //mod.setTelefone((String) jFormattedTextFieldTel.getText());
        control.Salvar(mod);
        jTextFieldNome.setEnabled(!true);
        jTextFieldEnd.setEnabled(!true);
        jTextFieldNome.setText("");
        jTextFieldEnd.setText("");
        jTextFieldID.setText("");
        jFormattedTextFieldCNPJ.setText("");
        //jFormattedTextFieldTel.setText("");
        jFormattedTextFieldCNPJ.setEnabled(!true);
        //jFormattedTextFieldTel.setText("");
        jButtonSalvar.setEnabled(!true);
        jButtonNovo.setEnabled(!false);
        preencherTabela("select * from fornecedores inner join intens_tel_forn on fornecedores.id_fornecedor=intens_tel_forn.id_fornecedor inner join telefone on intens_tel_forn.id_te=telefone.id_telefone");

        } else {
        mod.setNome(jTextFieldNome.getText());
        mod.setEndereco(jTextFieldEnd.getText());
        mod.setCNPJ(jFormattedTextFieldCNPJ.getText());
        mod.setBairro((String) jComboBoxBairro.getSelectedItem());
        control.Alterar(mod);
        jTextFieldNome.setEnabled(!true);
        jTextFieldEnd.setEnabled(!true);
        jTextFieldNome.setText("");
        jTextFieldEnd.setText("");
        jTextFieldID.setText("");
        jFormattedTextFieldCNPJ.setEnabled(!true);
        jButtonSalvar.setEnabled(!true);
        jButtonNovo.setEnabled(!false);
        preencherTabela("select * from fornecedores inner join intens_tel_forn on fornecedores.id_fornecedor=intens_tel_forn.id_fornecedor inner join telefone on intens_tel_forn.id_te=telefone.id_telefone");


        }
    }                             


public void preencherTabela(String SQL) {
        
    
    ArrayList dados = new ArrayList();

        String[] Colunas = new String[]{"ID", "Nome", "CNPJ","Telefone"};
        
        conn.executaSQL(SQL);
       
        try {
            
            conn.rs.first();
            do {
                dados.add(new Object[]{conn.rs.getInt("id_fornecedor"), conn.rs.getString("nome_fornecedor"), conn.rs.getString("cnpj_fornecedor"), conn.rs.getString("numero_tel")});
            } while (conn.rs.next());
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, "Erro ao preencher o ArrayList!\n ERRO: " + ex);
        }

        ModeloTabela modelo = new ModeloTabela(dados, Colunas);
        tabela.setModel(modelo);
        tabela.getColumnModel().getColumn(0).setPreferredWidth(90);
        tabela.getColumnModel().getColumn(0).setResizable(false);
        tabela.getColumnModel().getColumn(1).setPreferredWidth(200);
        tabela.getColumnModel().getColumn(1).setResizable(false);
        tabela.getColumnModel().getColumn(2).setPreferredWidth(131);
        tabela.getColumnModel().getColumn(2).setResizable(false);
        tabela.getColumnModel().getColumn(3).setPreferredWidth(100);
        tabela.getColumnModel().getColumn(3).setResizable(false);
        tabela.getTableHeader().setReorderingAllowed(false);
        tabela.setAutoResizeMode(tabela.AUTO_RESIZE_OFF);
        tabela.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);

    }
    

 

Editado por DiF
mais informações

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Ferreira27 Um resultset é criado por padrão antes do primeiro registro. Nunca use first() para as suas verificações.

 

A maneira correta e mais segura de fazer é assim:

 

if (conn.rs.next()) {
 //execute seu código 
}

Sempre use next(). Se next() retornar false, significa que o resultset está vazio e nada foi encontrado com os parâmetros enviados no comando SQL.

 

Usando first() você força que seja utilizado o primeiro registro do resultset. Se ele estiver vazio, vai dar erro.

Editado por TwistedSoul

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário






Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×