Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Ferreira_27

Resultset Nao esta Posicionado corretamente

Recommended Posts

Alguém pode me ajudar com esse código 

Estou com problemas  com essa mensagem  ao preencher o ArrayList e  salvar no banco de dados o formulário

org.postgresql.util.PSQLException: ResultSet não está posicionado corretamente, talvez você precise chamar next

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



    }
    

 

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

        }

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por Laurofelipe
      Estou fazendo um metodo para buscar dados em uma tabela, todas as linhas ou apenas conforme um nome, se for passado este parâmetro.
      Para não ter que duplicar o mesmo código, por apenas dois objetos, (PreparedStatement e ResultSet), dentro do try {... tenho um if () {}...}...}, conforme código abaixo.
      Acontece que não consegui instanciar, recebo um aviso de que não é possível instanciar estes objetos, sera?
      Então, se inicializo fora, não tenho acesso dentro do if () {...}. Se inicializo dentro, não tenho depois como varrer o resultado (while ...).
      Tenho como resolver?
      Agradeço qualquer ajuda do pessoal mais calejado.
      Lauro
       
      public ArrayList<Atleta> atletaBuscar(String nome) {
         ArrayList<Atleta> lista = new ArrayList<Atleta>();
         String sqlConsulta = null;
          try {
            Connection conn = ConectaMySql.obtemConexao();
            if (nome.isEmpty() || nome.equals("?")) { // buscar todos
               sqlConsulta = "SELECT * FROM atleta ORDER BY atleta_nome ASC";
               PreparedStatement ppStm = conn.prepareStatement(sqlConsulta);
            } else { // buscar por nome ou parte dele
              sqlConsulta = "SELECT * FROM atleta WHERE LOWER(atleta_nome) LIKE ? ORDER BY atleta_nome ASC";
              PreparedStatement ppStm = conn.prepareStatement(sqlConsulta);
              ppStm.setString(1, nome);
         }
         ResultSet rsAtleta = ppStm.executeQuery();
          while(rsAtleta.next()) {
             Atleta atle = new Atleta();
       
             atle.setAtleta_id(rsAtleta.getInt(1));
             ....
              lista.add(atle);
         }
         conn.close();
          } catch (Exception e){
             e.printStackTrace();
         }
         return lista;
      }
      Ja tentei conforme alguns post da net -> ResultSet rsAtleta = new ResultSet(); <- mas da o erro, que não pode ser instanciado
    • Por laryts
      Olá,
      Meu projeto é um site em html e jsp. E estou recuperando dados do banco de dados, e mostrando no jsp.
      Fiz isso por meio de uma classa java.
       
       
      AcessoDados.java
      public static List<DetalhesLivro> getDetalhesLivroById(int id) { List<DetalhesLivro> ls = new LinkedList<>(); String sql = "select j.nrLivro, j.nmLivro, j.dtPublicacao, j.nrPagina, j.dsSuplemento, j.dsCadernosEspeciais, ec.dsConservacao, p.dsPeriodicidade, j.dsObservacao from muLivro j left outer join muEstadoConservacao ec on j.cdConservacao = ec.cdConservacao left outer join muPeriodicidade p on j.cdPeriodicidade = p.cdPeriodicidade where j.nrLivro = '"+id+"'"; try { ResultSet rs = conexao.getPreparedStatement(sql).executeQuery(); while (rs.next()) { DetalhesLivro dLivro = new DetalhesJornais(rs.getInt(1), rs.getString(2), rs.getTimestamp(3), rs.getInt(4), rs.getString(5).charAt(0), rs.getString(6).charAt(0), rs.getString(7), rs.getString(8), rs.getString(9)); ls.add(dLivro); } } catch (ClassNotFoundException | SQLException ex) { Logger.getLogger(DataAccess.class.getName()).log(Level.SEVERE, null, ex); } return ls; } livro.jsp
      <% String cod = request.getParameter("pCod"); if (cod != "") { int codInt = Integer.parseInt(cod); DataAccess da = new DataAccess(); List<DetalhesJornais> djornais = da.getDetalhesJornalById(codInt); for (DetalhesJornais detalhesJornais : djornais) { %> <table> </table> <% } } %> E acontece algo muito estranho, quando voltou digitar o codigo para pesquisar, alguns registros retornam normalmente, e mostram no html normal. Mas alguns codigos vão para a pagina de erro, logo quando entra da linha
      etalhesLivro dLivro = new DetalhesJornais(...);. Depois desta linha ele sai do while, e vai direto para o <html> da pagina livro.jsp ((pelo Debug consegui essas informações, porém não mostra nenhuma mensagem de erro no Debug))
       
       
      Alguem pode me ajudar???
      É um erro muito estranho, e até difícil de explicar, se não ficou claro. tento ser mais detalhista
    • Por mnmn
      Olá pessoal.
       
      Tenho o seguinte código onde tenho duas queries, na primeira capturo o COUNT do campo nome_usuario, na segunda seleciono os campos que desejo. Gostaria de melhorar a performance, fazendo uma só query. Alguém pode me ajudar?
      <?php defined('BASEPATH') OR exit('No direct script access allowed'); class TodosAgendamentosFuturos_model extends CI_Model{ public function main($funcionario, $dataAtual, $limit, $start) { //Array para guardar dados a serem retornados $resultados = array(); //QUERY TO BIND TOTALCOUNT $sql = "SELECT DISTINCT COUNT(u.nome_usuario) AS total FROM horariosfuncionario hfs INNER JOIN usuario u INNER JOIN statushorariofuncionario shf INNER JOIN funcionario f INNER JOIN agendamento a INNER JOIN formapagamentosalao fps ON a.codigo_formapagamentosalao = fps.codigo_formapagamentosalao AND a.codigo_usuario = u.codigo_usuario AND a.codigo_horariosfuncionario = hfs.codigo_horariosfuncionario AND shf.codigo_statushorariofuncionario = hfs.codigo_statushorariofuncionario AND f.codigo_funcionario = hfs.codigo_funcionario WHERE STR_TO_DATE(hfs.data_horariosfuncionario, '%d/%m/%Y') > STR_TO_DATE(?, '%d/%m/%Y') AND f.codigo_funcionario = ? ORDER BY STR_TO_DATE(hfs.data_horariosfuncionario, '%d/%m/%Y'), STR_TO_DATE(hfs.horario_horariosfuncionario,'%H:%i')"; $total = $this->db->query($sql, array($dataAtual, $funcionario)); //Selecionando todos agendamentos futuros $sql = "SELECT DISTINCT u.nome_usuario, u.telefone1_usuario, u.telefone2_usuario, a.codigo_agendamento, hfs.horario_horariosfuncionario, hfs.data_horariosfuncionario, a.comentario_agendamento, fps.nome_formapagamentosalao FROM horariosfuncionario hfs INNER JOIN usuario u INNER JOIN statushorariofuncionario shf INNER JOIN funcionario f INNER JOIN agendamento a INNER JOIN formapagamentosalao fps ON a.codigo_formapagamentosalao = fps.codigo_formapagamentosalao AND a.codigo_usuario = u.codigo_usuario AND a.codigo_horariosfuncionario = hfs.codigo_horariosfuncionario AND shf.codigo_statushorariofuncionario = hfs.codigo_statushorariofuncionario AND f.codigo_funcionario = hfs.codigo_funcionario WHERE STR_TO_DATE(hfs.data_horariosfuncionario, '%d/%m/%Y') > STR_TO_DATE(?, '%d/%m/%Y') AND f.codigo_funcionario = ? ORDER BY STR_TO_DATE(hfs.data_horariosfuncionario, '%d/%m/%Y'), STR_TO_DATE(hfs.horario_horariosfuncionario,'%H:%i') LIMIT ".$limit." OFFSET ".$start; $resultado = $this->db->query($sql, array($dataAtual, $funcionario)); //Percorrendo resultados retornados foreach ($resultado->result() as $row) { //Captura dia da semana da data enviada como parâmetro usando o helper dia_semana $dia = diasemana($dataAtual); //Adiciona resultados no array resultados array_push($resultados, array('nome_usuario' => $row->nome_usuario, 'telefone1_usuario' => $row->telefone1_usuario, 'telefone2_usuario' => $row->telefone2_usuario, 'codigo_agendamento' => $row->codigo_agendamento, 'horario' => $row->horario_horariosfuncionario, 'data' => $row->data_horariosfuncionario, 'nomeDiaSemana' => $dia, 'comentario' => $row->comentario_agendamento, 'formaPagamento' => $row->nome_formapagamentosalao)); } $rows = $resultados; $data = array( "success"=>true, "totalCount"=>$total->row()->total, "menu"=>$rows ); echo json_encode($data); } }
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.