Erro no metodo localizarPessoa()

18 respostas
adsadilson

Olha eu aqui mais uma vez acho q vc vão me ver por muitas vez aqui no fórum, estou desenvolvendo um sistema de controle de estoque para apresenta no meu TCC, mais estou passado por dificuldade na codificação do mesmo. Estou com erro no método de localizarPessoa(); gostaria q vcs desse uma analisada nesse métodos q estou utilizado e me mostrasse onde esta o erro.

public void localizarPessoa(){
         try {
               String sql = "select * from pessoa where nome_razao like'%"+jtf_pesquisa.getText()+"%";
               // String sql = "select * from pessoa";
                con.exculteSQL(sql);
                
                DefaultTableModel model = (DefaultTableModel) jtb_pes_pessoa.getModel();
                model.setNumRows(0);
                
                while (con.resultset.next()) {
                 model.addRow(
                         new Object[]{
                             con.resultset.getString("id_pessoa"),
                             con.resultset.getString("nome_razao"),
                             con.resultset.getString("cpf_cnpj")
                                 
                         }
                    );
                 con.close();
                }
        }catch(Exception erro){
            JOptionPane.showMessageDialog(null,"Erro na visualização dos dados  "+ erro);
        }
    }

esses metodos quer criei na class de conexao estão corretos

public  class Conexao {
    
    private Connection con;
    public Statement statemet;
    public ResultSet resultset;
    
    public Conexao() {
        }

   
   public  boolean  exculteSQL(String sql)
    {
        try 
        {
            con = ConnectionFactory.getConexao();
            statemet = con.createStatement(ResultSet.TYPE_FORWARD_ONLY,ResultSet.CONCUR_READ_ONLY);
            resultset = statemet.executeQuery(sql);
            con.close();
            System.out.println("banco fechado");
        } catch (Exception sqlex) 
        {
            JOptionPane.showMessageDialog(null,"Não foi possível executar o"+
                          " comando sql,\n"+sqlex+"\no sql passado foi\n"+sql);
        }
        return false;
    }
    
  
     public void close(){
        try {
            con.close();
        } catch (SQLException ex) {
             JOptionPane.showMessageDialog(null,"Não foi possível fechar o banco"+ex);
        }
    }

18 Respostas

jhaga

E qual é o erro?

jeffev

Copei o erro que deu para que possamos lhe ajudar.

adsadilson

Esse é o erro

Não foi possível executar o comando sql
org.postgresql.util.PSQLException: ERROR: unterminated quoted string at or near “’%rerer%”
o sql passado foi
select * from pessoa where nome_razao like '%rerer%

jeffev

Falta aspa simples no final. Tente:

String sql = "select * from pessoa where nome_razao like'%"+jtf_pesquisa.getText()+"%'";
adsadilson

jeffev

valeu mesmo cara ja tinha um tempinho q estava tentando concerta esse erro mais nada, ha tenho outros erros aqui no meu projeto vou ver se colocor a imagem blz. isso é se vc puder me ajuda, mas deste ja agradeço cara

adsadilson

Estou com esse erro aqui tbm ao excluir o registro

esse é o codigo execulteSQL

public  boolean  exculteSQL(String sql)
    {
        try 
        {
            con = ConnectionFactory.getConexao();
            statemet = con.createStatement(ResultSet.TYPE_FORWARD_ONLY,ResultSet.CONCUR_READ_ONLY);
            resultset = statemet.executeQuery(sql);
            con.close();
            System.out.println("banco fechado");
        } catch (Exception sqlex) 
        {
            JOptionPane.showMessageDialog(null,"Não foi possível executar o"+
                          " comando sql,\n"+sqlex+"\no sql passado foi\n"+sql);
        }
        return false;
    }

pensei q fosse resolvido so com isso ResultSet.TYPE_FORWARD_ONLY,ResultSet.CONCUR_READ_ONLY mais infelizmente ainda continua dando o erro
statemet = con.createStatement(ResultSet.TYPE_FORWARD_ONLY,ResultSet.CONCUR_READ_ONLY);

fbl.lucas

adsadilson:
Estou com esse erro aqui tbm ao excluir o registro

esse é o codigo execulteSQL

public  boolean  exculteSQL(String sql)
    {
        try 
        {
            con = ConnectionFactory.getConexao();
            statemet = con.createStatement(ResultSet.TYPE_FORWARD_ONLY,ResultSet.CONCUR_READ_ONLY);
            resultset = statemet.executeQuery(sql);
            con.close();
            System.out.println("banco fechado");
        } catch (Exception sqlex) 
        {
            JOptionPane.showMessageDialog(null,"Não foi possível executar o"+
                          " comando sql,\n"+sqlex+"\no sql passado foi\n"+sql);
        }
        return false;
    }

pensei q fosse resolvido so com isso ResultSet.TYPE_FORWARD_ONLY,ResultSet.CONCUR_READ_ONLY mais infelizmente ainda continua dando o erro
statemet = con.createStatement(ResultSet.TYPE_FORWARD_ONLY,ResultSet.CONCUR_READ_ONLY);

Da uma olhada aqui Scrollable e Updateable ResultSet pode te ajudar

adsadilson

fbl.lucas
Boa tarde, lhe o link q vc me passou e conseguir resolver esse problema tbm entendi o motivo do erro. Muito obrigado, há como eu citei antes estou desenvolver o sistema para o meu TCC e infelizmente esta cheio de erro na codificação após esse dai estou com problema ao salvar os novos registros ou as alterações esta dando esse erro na tela. Vc sabe o motivo do erro.
[color=red]E obrigado a todos por suas atençoes[/color]

adsadilson

Segue o codigo q estou usando

private void jbt_salvarActionPerformed(java.awt.event.ActionEvent evt) {                                           
        try {
            String sql; // variavel para receber o comando sql
            if (jtf_id_pessoa.getText().equals("")&& jbopcao==1) {
                sql = "insert into pessoa (cpf_cnpj, nome_razao, apelido_fantasia, insc_municipal,rg) values (?,?,?,?,?)";
                //sql = "insert into pessoa(nome_razao)values(?)";
                
                PreparedStatement cmd = con.preparedStatement(sql);
                
                cmd.setString(1, jtf_cpf_cnpj.getText());
                cmd.setString(2, jtf_nome_razao.getText());
                cmd.setString(3, jtf_apelido_fantasia.getText());
                cmd.setString(4, jtf_insc_municipal.getText());
                cmd.setString(5, jtf_rg.getText());
                
                cmd.executeUpdate();
                cmd.close();
                con.close();
                
                JOptionPane.showMessageDialog(null, "Registro gravado com sucesso!");
                jbopcao=0;

            } else   if (!jtf_id_pessoa.getText().equals("")&& jbopcao==3){
                sql = "update pessoa set cpf_cnpj =?, nome_razao=?, apelido_fantasia=?, insc_municipal=?, rg=?"
                        + " where id_pessoa=?";

               // con.cmd = con.updateSQL(sql);
                PreparedStatement cmd = con.preparedStatement(sql);
                
                cmd.setString(1, jtf_cpf_cnpj.getText());
                cmd.setString(2, jtf_nome_razao.getText());
                cmd.setString(3, jtf_apelido_fantasia.getText());
                cmd.setString(4, jtf_insc_municipal.getText());
                cmd.setString(5, jtf_rg.getText());
                cmd.setString(6, jtf_id_pessoa.getText());
                
                cmd.executeUpdate();
                cmd.close();
                con.close();

                JOptionPane.showMessageDialog(null, "Registro autalizado com sucesso! \n\n Sistema SIBD Versão 0.0.001");
                jbopcao=0;
            }else {
            }
        } catch (Exception erro) {
            JOptionPane.showMessageDialog(null, "Erro na sintaxe do comando:  " + erro);
        }
    }

public boolean exculteSQL(String sql) { try { con = ConnectionFactory.getConexao(); statemet = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); resultset = statemet.executeQuery(sql); con.close(); System.out.println("banco fechado"); } catch (Exception sqlex) { JOptionPane.showMessageDialog(null,"Não foi possível executar o"+ " comando sql,\n"+sqlex+"\no sql passado foi\n"+sql); } return true; }

fbl.lucas

Cara, me passa a pilha de erro completa. Coloca para exibir o erro no log e posa aqui

} catch (Exception erro) { 
  erro.printStackTrace(); // joga a pilha de erro no console 
    JOptionPane.showMessageDialog(null, "Erro na sintaxe do comando:  " + erro);  
}
adsadilson

ai vai o erro

run:
java.lang.UnsupportedOperationException: Not yet implemented
	at jdbc.Conexao.preparedStatement(Conexao.java:116)
	at view.Pessoa.jbt_salvarActionPerformed(Pessoa.java:1148)
	at view.Pessoa.access$1500(Pessoa.java:25)
	at view.Pessoa$13.actionPerformed(Pessoa.java:934)
	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
	at java.awt.Component.processMouseEvent(Component.java:6505)
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
	at java.awt.Component.processEvent(Component.java:6270)
	at java.awt.Container.processEvent(Container.java:2229)
	at java.awt.Component.dispatchEventImpl(Component.java:4861)
	at java.awt.Container.dispatchEventImpl(Container.java:2287)
	at java.awt.Component.dispatchEvent(Component.java:4687)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
	at java.awt.Container.dispatchEventImpl(Container.java:2273)
	at java.awt.Window.dispatchEventImpl(Window.java:2719)
	at java.awt.Component.dispatchEvent(Component.java:4687)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:703)
	at java.awt.EventQueue.access$000(EventQueue.java:102)
	at java.awt.EventQueue$3.run(EventQueue.java:662)
	at java.awt.EventQueue$3.run(EventQueue.java:660)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
	at java.awt.EventQueue$4.run(EventQueue.java:676)
	at java.awt.EventQueue$4.run(EventQueue.java:674)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:673)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:244)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:163)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:147)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:139)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:97)
CONSTRUÍDO COM SUCESSO (tempo total: 13 segundos)
fbl.lucas

Você implementou o método jdbc.Conexao.preparedStatement(String sql)? Posta sua classe jdbc.Conexao

adsadilson
package jdbc;

import com.sun.org.apache.bcel.internal.generic.RETURN;
import java.sql.*;
import javax.swing.JOptionPane;

/**
 *
 * @author C01
 */
public  class Conexao {
    
    private Connection con;
    public Statement statemet;
    public PreparedStatement st;
    public ResultSet resultset;
    private int result;
    
    public Conexao() {
     
    }

        
    public  boolean  exculteSQL(String sql)
    {
        try 
        {
            con = ConnectionFactory.getConexao();
            statemet = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
            resultset = statemet.executeQuery(sql);
            con.close();
            System.out.println("banco fechado");
        } catch (Exception sqlex) 
        {
            JOptionPane.showMessageDialog(null,"Não foi possível executar o"+
                          " comando sql,\n"+sqlex+"\no sql passado foi\n"+sql);
        }
        return true;
    }
     
    public void close(){
        try {
            con.close();
        } catch (SQLException ex) {
             JOptionPane.showMessageDialog(null,"Não foi possível fechar o banco"+ex);
        }
    }
   
  
     public PreparedStatement preparedStatement(String sql) {
        throw new UnsupportedOperationException("Not yet implemented");
    }
    
    
}

Ver se esse metodo pode fica assim, para a consultar e exclusao estao funcionando

fbl.lucas

Você não implementou o método!

public PreparedStatement preparedStatement(String sql) {  
        throw new UnsupportedOperationException("Not yet implemented");  
}
public PreparedStatement preparedStatement(String sql) {  
  return con.preparedStatement(sql);  
}

Sugestão, coloque o con = ConnectionFactory.getConexao(); no construtor da classe Conexao ou vai ser necessário adicionar este trecho no método preparedStatement(

public PreparedStatement preparedStatement(String sql) {  
  con = ConnectionFactory.getConexao();
  return con.preparedStatement(sql);  
}
adsadilson

fiz das duas forma q vc passou mas esta dando erro dentro da class deu a seguinte messagem

cannot find symbol
symbol: method preparedStatement(java.lang.String)
location: variable con of type java.sql.Cconnection

eu deixei esse comando fora do construtor con = ConnectionFactory.getConexao(); por conta de quando eu entra na tela ele nao abrir o banco só por isso mesmo pensei q seira melhor

adsadilson

fbl.lucas

fiz do jeito vc mando mais infelizmente esta com erro na classe agora rsrsrs.

esta com a seguinte messagem

cannot find symbom
symbol: method preparedStatement(Java.lang.String)
location: variable con of type java.sqlConnection

fbl.lucas

adsadilson:
fbl.lucas

fiz do jeito vc mando mais infelizmente esta com erro na classe agora rsrsrs.

esta com a seguinte messagem

cannot find symbom
symbol: method preparedStatement(Java.lang.String)
location: variable con of type java.sqlConnection

usa prepareStatement ao invés de preparedStatement, mas isso seria trivial de você descobrir…você conhece o comando ctrl+space da sua IDE? ele completa o código exibindo por exemplo quais os métodos que a classe Connection tem, com isso você teria descoberto qual o nome do método corret.

adsadilson

É meu jovem infelizmente estou cru nesse novo mundo mais um dia eu chego lá, ontem a noite navegando pela net encontrei um método q achei muito interessante e q resolver os meus problemas do Crud (select, update, delete), mas tive q munda algumas coisa mais deu certinho aqui deixo o método para alguém q esteja com a mesma dificuldade q tiver.

:idea: 
public ResultSet getConexao(String sql, String acao) throws SQLException {        
        try {            
            con = ConnectionFactory.getConexao();
            System.out.println("Banco de dados aberto");
            cmd = con.createStatement();            
            
            if (acao.equals("insert") || acao.equals("update") || acao.equals("delete")) {                
                cmd.executeUpdate(sql);                
            } else {                
                rs = (cmd.executeQuery(sql));                
                return rs;                
            }            
            
        } catch (Exception e) {            
            JOptionPane.showMessageDialog(null, "Não foi possível executar o"
                    + " comando sql,\n " + e + "\no sql passado foi\n" + sql);
            e.printStackTrace();
        } finally {            
            con.close();            
            System.out.println("Banco de dados fechado");
        }        
        return rs;        
    }

Mas muito obrigado a todos mais uma vez por ter colaborando nessa empreitada em breve estarei postando novas duvidas.
Aos poucos irei aprendo a interagir nesse mundo JAVA :thumbup:

Criado 15 de agosto de 2012
Ultima resposta 17 de ago. de 2012
Respostas 18
Participantes 4