Ir para conteúdo

Arquivado

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

Laurofelipe

instanciar PreparedStatement e ResultSet

Recommended Posts

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por Ferreira_27
      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) { }  
       
       
    • 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.