Quando executo o programa de novo e faço a pesquisa, ele dá esse erro, mas quando adiciono e volto a pesquisar sem voltar a executar o programa, me lança a exceção do tópico!
M
Marcio_Tostes
AvelinoTrindade, se eu não estou enganado, no momento em que você faz a pesquisa, você seta para o primeiro parâmetro do seu preparedStatment o caracter “%”, então sua consulta fica dessa forma.
Marcio, tentei fazer do jeito que você sugeriu, ele continua com o mesmo erro!
R
Rodrigo_Marden
Se você colocar %, na frente ou atrás de uma string, o like entende que deve retornar qualquer coisa que venha acompanhado daquela string.
R
Rodrigo_Marden
Se você tiver acesso direto ao banco, teste a Query direto nele e veja se retorna o que você espera.
Se retornar certo, o problema é no seu programa e não na Query.
A
avelinotrindade
No banco ele dá exatamente o resultado esperado, já tentei executar pelo workbench.
Rodrigo, talvez seja essa a razão que me leva buscar ajuda dos mais experientes por aqui, não consigo ver onde está o erro no código, admitindo a possível possibilidade dada pelo nobre Marcio, infelizmente não resultou!
A
avelinotrindade
Teste pelo workbench:
select * from tbcliente where nomecli like “B%”; *
o Null pointer exception esta nesta linha>: at ao.com.infox.telas.TelaCliente.PesquisarCliente(TelaCliente.java:27) -->> linha 27 do codigo TelaCliente.java , coloca trecho desta linha pra gente ver o que tá fazendo.
uma outra coisa, você esta colocando a pesquisa no evento KeyReleased do component, ou seja, a cada t tecla pressionada é disparado o evento , fazendo a busca, se pesquisar pelo nome “Marcos”, logo quando pressionar o “m” e soltar a tecla, já vai fazer a busca pela primeira letra pressionada , no caso o “M” , trazendo o erro Null Pointer. muda esse evento do seu botao para o KeyPressed e testa pra ver !
sem bem que não é pra trazer o null pointer exception mesmo quando pressionar o enter… pensando melhor o erro esta em outro lugar
M
Marcio_Tostes
Rodrigo, sou iniciante em programação, realmente você tem razão, dessa forma irá apenas adicionar o o caractere %, depois do nome pesquisado.
A
avelinotrindade
public void PesquisarCliente (){
Stringsql="select * from tbcliente where nomecli like ?";try{conexao.prepareStatement(sql);pr.setString(1,txtclipesquisa.getText()+"%");rs=pr.executeQuery();//Esseéoalinhadocódioqueaparecealimano.if(rs!=null){tbclientes.setModel(DbUtils.resultSetToTableModel(rs));}}catch(SQLExceptione){JOptionPane.showMessageDialog(null,"ErroaofazerPesquisa:"+e);}}
M
Marcio_Tostes1 like
Avelino, boa tarde.
Cara, se sua pesquisa no workbenck funciona, tente posicionar o resultSet para a primeira linha válida da sua consulta, utilizando o método first do ResultSet, dessa forma.
A
avelinotrindade
Fiz do jeito e ainda continua dando exceção do “nullpoint”.
Se fizer um cadastro no momento e tentar pesquisar, ele manda a exceção do “Catch” com essa informação : “can not issue data manipulation statements with executequery”.
Estou desde manhã tentando entender, mas não consigo resolver o caso!
R
Rodrigo_Marden1 like
@avelinotrindade, Aconselho você a “debugar” o código e ver até onde ele funciona sem problemas, assim você vai saber exatamente a linha de código em que ele resulta o nullpoint e pode nos trazer para te ajudar.
A
avelinotrindade
Está bem!
M
Marcio_Tostes
Avelino, vamos com calma tentar desvendar o seu mistério.
Acho que o seu problema está nessa linha, tente mudar cara a sua sql, e deixar dessa forma:
String sql = “select * from tbcliente where nomecli like '”+JTextFild.getText()+"%’";
Fiz testes aqui na minha aplicação, e veja como ficou o meu JOPtionPane.
A
avelinotrindade
Infelizmente não deu também:
public void PesquisarCliente() {
Stringsql="select * from tbcliente where nomecli like"+txtclipesquisa.getText()+"%";try{conexao.prepareStatement(sql);//pr.setString(1,txtclipesquisa.getText()+"%");rs=pr.executeQuery();if(rs!=null){rs.first();tabelaclientes.setModel(DbUtils.resultSetToTableModel(rs));}}catch(SQLExceptione){JOptionPane.showMessageDialog(null,"ErroaofazerPesquisa:"+e);}}
M
Marcio_Tostes
Qual foi o erro dessa vez?
A
avelinotrindade
Ele me dá este erro também, mas isso se eu não sair do programa, cadastrar um novo cliente e tentar fazer pesquisa, ele me dá esse erro. Agora se eu sair e voltar a abrir o programa, tão logo que digito uma palavra na caixa de pesquisa, ele dá o erro de “nullpointExcpetion”.
M
marcelo-rebello
depois ,
esse conexao.preparedStament(sql); , é o prepaparedStatement que esta vindo da classe conexão ?? ,
depois
esse pr.executeQuery(); deve ser uma instancia do prepararedStament desta classe que você esta agora /? , você tá trazendo uma instância do preparedStament da classe conexao, e depois rs = pr,executeQuery(); desta própria Classe? , tá certo isso ?
M
marcelo-rebello1 like
posta o parte deste metodo, instancia deste conexao.preparedStatement(); pra vermos o que ele esta fazendo !
A
avelinotrindade
Desculpem por responder só agora, ontem me foi barrado por atingir o limite de resposta de novato por aqui. Mano Marcelo, eis ai no seu todo o método:
Stringsql="select * from tbcliente where nomecli like ?";//pensoqueessseéapartequepedesparamostrar.try{conexao.prepareStatement(sql);pr.setString(1,txtclipesquisa.getText()+"%");rs=pr.executeQuery();if(rs!=null){rs.first();tabelaclientes.setModel(DbUtils.resultSetToTableModel(rs));}}catch(SQLExceptione){JOptionPane.showMessageDialog(null,"ErroaofazerPesquisa:"+e);}}
M
marcelo-rebello1 like
meu, de onde vem a conexão com o banco de dados ?
sua conexão esta null, de onde vem a conexão do seu banco ?
M
Marcio_Tostes
Exatamente,ia perguntar a mesma coisa, provavelmente esse é o erro!