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