NullPointerException

Então galera estou com um probleminha chato.
NullPointerException

Vou postar o log do erro.

run: Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException at locadora0110.Locacao.Deletar(Locacao.java:555) at locadora0110.Locacao.jButton2ActionPerformed(Locacao.java:329) at locadora0110.Locacao.access$600(Locacao.java:19) at locadora0110.Locacao$8.actionPerformed(Locacao.java:164) 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:723) at java.awt.EventQueue.access$200(EventQueue.java:103) at java.awt.EventQueue$3.run(EventQueue.java:682) at java.awt.EventQueue$3.run(EventQueue.java:680) 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:696) at java.awt.EventQueue$4.run(EventQueue.java:694) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) at java.awt.EventQueue.dispatchEvent(EventQueue.java:693) 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)

public void Deletar() { Conexao c = new Conexao(); ResultSet rs = null; String Comando = "select * from Filme where Codigo=" + jTFCodFilme.getText(); String Consulta= "delete from Filme_Loc where CodFilme=" + jTFCodFilme.getText(); try { c.Atualiza(Consulta); } catch (SQLException ex) { Logger.getLogger(Locacao.class.getName()).log(Level.SEVERE, null, ex); } try { while (rs.next()) { jTLFilmes.setValueAt(rs.getString(""), L, 0); jTLFilmes.setValueAt(rs.getString(""), L, 1); jTLFilmes.setValueAt(rs.getString(""), L, 2); jTLFilmes.setValueAt(rs.getString(""), L, 3); jTLFilmes.setValueAt(rs.getString(""), L, 4); jTLFilmes.setValueAt(rs.getString(""), L, 5); } } catch (SQLException ex) { Logger.getLogger(Locacao.class.getName()).log(Level.SEVERE, null, ex); } try { c.Atualiza(Comando); } catch (SQLException ex) { Logger.getLogger(Locacao.class.getName()).log(Level.SEVERE, null, ex); } try { c.Exit(); } catch (SQLException ex) { Logger.getLogger(Locacao.class.getName()).log(Level.SEVERE, null, ex); } }

Fui pesquisar na net e vi que era por que ta public void, teria que por public static void;
Porem depois que coloquei algumas coisas pararam de funcionar…
Como:

String Comando = "select * from Filme where Codigo=" + jTFCodFilme.getText(); String Consulta= "delete from Filme_Loc where CodFilme=" + jTFCodFilme.getText();

jTLFilmes.setValueAt(rs.getString(""), L, 0); jTLFilmes.setValueAt(rs.getString(""), L, 1); jTLFilmes.setValueAt(rs.getString(""), L, 2); jTLFilmes.setValueAt(rs.getString(""), L, 3); jTLFilmes.setValueAt(rs.getString(""), L, 4); jTLFilmes.setValueAt(rs.getString(""), L, 5);

Grato

[quote=michetti]Então galera estou com um probleminha chato.
NullPointerException

Vou postar o log do erro.

run: Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException at locadora0110.Locacao.Deletar(Locacao.java:555) at locadora0110.Locacao.jButton2ActionPerformed(Locacao.java:329) at locadora0110.Locacao.access$600(Locacao.java:19) at locadora0110.Locacao$8.actionPerformed(Locacao.java:164) 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:723) at java.awt.EventQueue.access$200(EventQueue.java:103) at java.awt.EventQueue$3.run(EventQueue.java:682) at java.awt.EventQueue$3.run(EventQueue.java:680) 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:696) at java.awt.EventQueue$4.run(EventQueue.java:694) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) at java.awt.EventQueue.dispatchEvent(EventQueue.java:693) 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)

public void Deletar() { Conexao c = new Conexao(); ResultSet rs = null; String Comando = "select * from Filme where Codigo=" + jTFCodFilme.getText(); String Consulta= "delete from Filme_Loc where CodFilme=" + jTFCodFilme.getText(); try { c.Atualiza(Consulta); } catch (SQLException ex) { Logger.getLogger(Locacao.class.getName()).log(Level.SEVERE, null, ex); } try { while (rs.next()) { jTLFilmes.setValueAt(rs.getString(""), L, 0); jTLFilmes.setValueAt(rs.getString(""), L, 1); jTLFilmes.setValueAt(rs.getString(""), L, 2); jTLFilmes.setValueAt(rs.getString(""), L, 3); jTLFilmes.setValueAt(rs.getString(""), L, 4); jTLFilmes.setValueAt(rs.getString(""), L, 5); } } catch (SQLException ex) { Logger.getLogger(Locacao.class.getName()).log(Level.SEVERE, null, ex); } try { c.Atualiza(Comando); } catch (SQLException ex) { Logger.getLogger(Locacao.class.getName()).log(Level.SEVERE, null, ex); } try { c.Exit(); } catch (SQLException ex) { Logger.getLogger(Locacao.class.getName()).log(Level.SEVERE, null, ex); } }

Fui pesquisar na net e vi que era por que ta public void, teria que por public static void;
Porem depois que coloquei algumas coisas pararam de funcionar…
Como:

String Comando = "select * from Filme where Codigo=" + jTFCodFilme.getText(); String Consulta= "delete from Filme_Loc where CodFilme=" + jTFCodFilme.getText();

jTLFilmes.setValueAt(rs.getString(""), L, 0); jTLFilmes.setValueAt(rs.getString(""), L, 1); jTLFilmes.setValueAt(rs.getString(""), L, 2); jTLFilmes.setValueAt(rs.getString(""), L, 3); jTLFilmes.setValueAt(rs.getString(""), L, 4); jTLFilmes.setValueAt(rs.getString(""), L, 5);

Grato[/quote]

A linha 555, do arquivo Locacao.java por acaso aponta para:

while (rs.next()) {

Como o erro eh NullPointerException é quase certo que sim.
Isso está ocorrendo pq vc atribui null pra rs e depois tenta fazer o rs.next.

Voce deve obter, atraves de um PreparedStatement geralmente, os registros que você deseja percorrer.

Por exemplo:


ResultSet rs = pst.executeQuery("Select * from tabela");

OBS: Procure utilizar o PreparedStatement, pois da forma como você está fazendo, algo terrível pode ocorrer no bloco abaixo, com o uso de SQL Injection:

String Consulta= "delete from Filme_Loc where CodFilme=" + jTFCodFilme.getText();  
     try {  
         c.Atualiza(Consulta);  
     } 

Vou fazer as modificaçoes e ja edito
grato

Estava olhando aqui para usar esse comando que você passou
Eu teria que criar uma variel do Tipo Statement e falar que ela recebe createStatement () ;
Estou certo ?

Mais o problema que não tem essa parte do Statement na minha classe conexão

@edit

Olhei minha classe Conexão, tem tudo citado acima, agora vou adptar para eu poder usar.

@edit 2

Agora deu esse erro

Out 04, 2012 8:19:26 PM locadora0110.Locacao Deletar SEVERE: null java.sql.SQLException: Operation not allowed after ResultSet closed at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:987) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:982) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:927) at com.mysql.jdbc.ResultSetImpl.checkClosed(ResultSetImpl.java:794) at com.mysql.jdbc.ResultSetImpl.next(ResultSetImpl.java:7139) at locadora0110.Locacao.Deletar(Locacao.java:556) at locadora0110.Locacao.jButton2ActionPerformed(Locacao.java:329) at locadora0110.Locacao.access$600(Locacao.java:19) at locadora0110.Locacao$8.actionPerformed(Locacao.java:164) 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:723) at java.awt.EventQueue.access$200(EventQueue.java:103) at java.awt.EventQueue$3.run(EventQueue.java:682) at java.awt.EventQueue$3.run(EventQueue.java:680) 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:696) at java.awt.EventQueue$4.run(EventQueue.java:694) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) at java.awt.EventQueue.dispatchEvent(EventQueue.java:693) 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)

try { Conexao c = new Conexao(); String Comando = "select * from Filme where Codigo=" + jTFCodFilme.getText(); ResultSet rs = c.Consulta(Comando); String Consulta= "delete from Filme_Loc where CodFilme=" + jTFCodFilme.getText(); try { c.Atualiza(Consulta); } catch (SQLException ex) { Logger.getLogger(Locacao.class.getName()).log(Level.SEVERE, null, ex); } try { while (rs.next()) { jTLFilmes.setValueAt(rs.getString(""), L, 0); jTLFilmes.setValueAt(rs.getString(""), L, 1); jTLFilmes.setValueAt(rs.getString(""), L, 2); jTLFilmes.setValueAt(rs.getString(""), L, 3); jTLFilmes.setValueAt(rs.getString(""), L, 4); jTLFilmes.setValueAt(rs.getString(""), L, 5); } } catch (SQLException ex) { Logger.getLogger(Locacao.class.getName()).log(Level.SEVERE, null, ex); } try { c.Atualiza(Comando); } catch (SQLException ex) { Logger.getLogger(Locacao.class.getName()).log(Level.SEVERE, null, ex); } try { c.Exit(); } catch (SQLException ex) { Logger.getLogger(Locacao.class.getName()).log(Level.SEVERE, null, ex); } } catch (SQLException ex) { Logger.getLogger(Locacao.class.getName()).log(Level.SEVERE, null, ex); } }

[quote=michetti]Estava olhando aqui para usar esse comando que você passou
Eu teria que criar uma variel do Tipo Statement e falar que ela recebe createStatement () ;
Estou certo ?

Mais o problema que não tem essa parte do Statement na minha classe conexão

@edit

Olhei minha classe Conexão, tem tudo citado acima, agora vou adptar para eu poder usar.

@edit 2

Agora deu esse erro

Out 04, 2012 8:19:26 PM locadora0110.Locacao Deletar SEVERE: null java.sql.SQLException: Operation not allowed after ResultSet closed at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:987) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:982) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:927) at com.mysql.jdbc.ResultSetImpl.checkClosed(ResultSetImpl.java:794) at com.mysql.jdbc.ResultSetImpl.next(ResultSetImpl.java:7139) at locadora0110.Locacao.Deletar(Locacao.java:556) at locadora0110.Locacao.jButton2ActionPerformed(Locacao.java:329) at locadora0110.Locacao.access$600(Locacao.java:19) at locadora0110.Locacao$8.actionPerformed(Locacao.java:164) 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:723) at java.awt.EventQueue.access$200(EventQueue.java:103) at java.awt.EventQueue$3.run(EventQueue.java:682) at java.awt.EventQueue$3.run(EventQueue.java:680) 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:696) at java.awt.EventQueue$4.run(EventQueue.java:694) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) at java.awt.EventQueue.dispatchEvent(EventQueue.java:693) 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)

try { Conexao c = new Conexao(); String Comando = "select * from Filme where Codigo=" + jTFCodFilme.getText(); ResultSet rs = c.Consulta(Comando); String Consulta= "delete from Filme_Loc where CodFilme=" + jTFCodFilme.getText(); try { c.Atualiza(Consulta); } catch (SQLException ex) { Logger.getLogger(Locacao.class.getName()).log(Level.SEVERE, null, ex); } try { while (rs.next()) { jTLFilmes.setValueAt(rs.getString(""), L, 0); jTLFilmes.setValueAt(rs.getString(""), L, 1); jTLFilmes.setValueAt(rs.getString(""), L, 2); jTLFilmes.setValueAt(rs.getString(""), L, 3); jTLFilmes.setValueAt(rs.getString(""), L, 4); jTLFilmes.setValueAt(rs.getString(""), L, 5); } } catch (SQLException ex) { Logger.getLogger(Locacao.class.getName()).log(Level.SEVERE, null, ex); } try { c.Atualiza(Comando); } catch (SQLException ex) { Logger.getLogger(Locacao.class.getName()).log(Level.SEVERE, null, ex); } try { c.Exit(); } catch (SQLException ex) { Logger.getLogger(Locacao.class.getName()).log(Level.SEVERE, null, ex); } } catch (SQLException ex) { Logger.getLogger(Locacao.class.getName()).log(Level.SEVERE, null, ex); } }[/quote]

Na verdade o objeto Conexao() deve ser do tipo java.sql.Connection.

Por exemplo, usando JDBC:

Connection con = DriverManager.getConnection(URL_BANCO,USER,PASSWORD);

Qualquer coisa posta o código da classe Conexao.

Já quanto a esse método:

c.Consulta(Comando); 

resulta um objeto resultset? Caso não, o problema está aí.

E sobre o Statement, na verdade eu havia sugerido um PreparedStatement, veja um exemplo:

Conexao c = new Conexao(); //partindo do fato que isso abre uma conexão com o banco de dados, pois nao sei como está o metodo construtor da classe Conexao().
PreparedStatement pst = c.prepareStatement("SELECT * FROM FILME WHERE CODIGO = ?");
pst.setInt(1,Integer.parseInt(jTFCodFilme.getText())); // partindo do fato que o código seja um tipo inteiro.

ResultSet rs = pst.executeQuery();// isso carrega os dados em rs.

while (rs.next()){
   //codigo do loop.
}

Dessa forma, passando o código por parâmetro você evita o SQL Injection.

Pois da forma que você está fazendo pode ocorrer um problema, principalmente no delete, se no campo jTFCodFilme for digitado algo como “1 or 1=1” (sem aspas).
Se desejar, teste, cadastre varios produtos, e ao excluir digite nesse campo o que passei acima e veja o resultado.