Erro java.lang.NullPointerException

19 respostas
P

Pessoal está dando o seguinte erro no meu aplicativo java. Eu executo o aplicativo, clico no botão que chama uma classe, essa classe consulta tem um método que consulta o banco e retorna o resultado dessa consulta.

Botão:

private void jButton5ActionPerformed(java.awt.event.ActionEvent evt) {

String agente="", ip="";
   try {  
      Scanner scanner = new Scanner(new File("C:/Users/YPY/Documents/agente.txt"));  
         while (scanner.hasNext()) {  
            agente = scanner.nextLine();
         }  
         scanner.close();  
         }catch (IOException e) {  
             e.printStackTrace();  
          }
   
   try {  
           Scanner scanner = new Scanner(new File("C:/Users/YPY/Documents/ip.txt"));  
           while (scanner.hasNext()) {  
           ip = scanner.nextLine();
           }  
           scanner.close();  
        }catch (IOException e) {  
            e.printStackTrace();  
        }  
   ConectaBd conect = new ConectaBd();
   ResultSet resultado = conect.conecta(agente,ip);
        try {
           if (resultado.next()){
              String id = resultado.getString("id");
              String cliente = resultado.getString("cliente");
              String destino = resultado.getString("destino");
                  
              if (destino.length() == 12){
                 destino = destino.substring(2);
              }
              jTextField4.setText(id);
              jTextField6.setText(destino);
              jTextField5.setText(cliente);
           }
           else{
              jTextField4.setText("");
              JOptionPane.showMessageDialog(null, "NUMERO NÃO ENCONTRADO!", "", JOptionPane.WARNING_MESSAGE);
           }

        }catch (SQLException ex) {
            Logger.getLogger(Jan1C2.class.getName()).log(Level.SEVERE, null, ex);
         }
}

Classe que consulta o banco:

public class ConectaBd {
   public static ResultSet conecta(String agente, String ip){
       
      String driver = "com.mysql.jdbc.Driver"; //Classe do driver JDBC
      String banco = "trix"; //Nome do Banco criado
      String usuario = "pred"; //Usuário do banco
      String senha = "1212"; //Senha de conexão
      String str_conn = "jdbc:mysql://" + ip + ":3306/" + banco; //URL de conexão
      
      try 
         {
             Class.forName(driver);
             Connection conn = DriverManager.getConnection(str_conn, usuario, senha);
             Statement stmt = conn.createStatement();
             String sql = "SELECT destino, cliente FROM active_calls where agente = '" + agente + "'";
             ResultSet rs = stmt.executeQuery(sql);
             conn.close();
             return (rs);
          }
           catch (ClassNotFoundException ex) {
              System.out.println("Não foi possível carregar o driver.");
             // ex.printStackTrace();
              return null;
           }
           catch (SQLException ex) {
              System.out.println("Problema com o SQL");
        //      ex.printStackTrace();
              return null;
          }
   }   
}
run:
Não foi possível carregar o driver.
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
	at Jan1C2.jButton5ActionPerformed(Jan1C2.java:251)
	at Jan1C2.access$300(Jan1C2.java:10)
	at Jan1C2$4.actionPerformed(Jan1C2.java:160)
	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
	at java.awt.Component.processMouseEvent(Component.java:6288)
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
	at java.awt.Component.processEvent(Component.java:6053)
	at java.awt.Container.processEvent(Container.java:2041)
	at java.awt.Component.dispatchEventImpl(Component.java:4651)
	at java.awt.Container.dispatchEventImpl(Container.java:2099)
	at java.awt.Component.dispatchEvent(Component.java:4481)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
	at java.awt.Container.dispatchEventImpl(Container.java:2085)
	at java.awt.Window.dispatchEventImpl(Window.java:2478)
	at java.awt.Component.dispatchEvent(Component.java:4481)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:643)
	at java.awt.EventQueue.access$000(EventQueue.java:84)
	at java.awt.EventQueue$1.run(EventQueue.java:602)
	at java.awt.EventQueue$1.run(EventQueue.java:600)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
	at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
	at java.awt.EventQueue$2.run(EventQueue.java:616)
	at java.awt.EventQueue$2.run(EventQueue.java:614)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:613)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

19 Respostas

nel

Oi!

Seu erro é nessa linha, provavelmente:

Não sei qual linha isso representa no que tu postou, mas esse erro é basicamente isso:

String s = null; s.trim();

Realize um debug em seu código e veja essa linha, pode haver algo do tipo.
Abraços.

C

Pedro, você adicionou o driver jdbc do mysql no seu projeto? Caso não, é só clicar com o direito no projeto, properties, java build path, libraries, ai clica em add external jar e seleciona o driver, ou se preferir, copia o driver pra dentro do seu projeto, com ctrl+c e ctrl+v, ai vai na mesma opção, mas ao invés de adicionar como external jar, adiciona como jar normal. Vê se dá certo, ai posta ia depois o resultado.

Abs.

nel

champs:
Pedro, você adicionou o driver jdbc do mysql no seu projeto? Caso não, é só clicar com o direito no projeto, properties, java build path, libraries, ai clica em add external jar e seleciona o driver, ou se preferir, copia o driver pra dentro do seu projeto, com ctrl+c e ctrl+v, ai vai na mesma opção, mas ao invés de adicionar como external jar, adiciona como jar normal. Vê se dá certo, ai posta ia depois o resultado.

Abs.

Podes explicar como a falta do driver JDBC para esse caso pode ocorrer em um NullPointerException ?
Se não houvesse o Driver e o problema fosse este, daria uma outra exceção, não acha? :slight_smile:

lucasportela

nel,

catch (ClassNotFoundException ex) {  
      System.out.println("Não foi possível carregar o driver.");  
   // ex.printStackTrace();  
      return null;  
}

Veja que na saída ele imprimiu que não foi possível carregar o driver, sendo assim, faz todo sentido o que o champs falou.

E o NullPointer ocorre na linha

if (resultado.next()){

Porque ele retornou null e tentou buscar o proxímo.

P

champs:
Pedro, você adicionou o driver jdbc do mysql no seu projeto? Caso não, é só clicar com o direito no projeto, properties, java build path, libraries, ai clica em add external jar e seleciona o driver, ou se preferir, copia o driver pra dentro do seu projeto, com ctrl+c e ctrl+v, ai vai na mesma opção, mas ao invés de adicionar como external jar, adiciona como jar normal. Vê se dá certo, ai posta ia depois o resultado.
abs.

Realmente eu tinha esquecido de adicionar o jar do mysql connector, adicionei mas continua não funcionando, cai em outra exceção.

Problema com o SQL
	at Jan1C2.jButton5ActionPerformed(Jan1C2.java:251)
	at Jan1C2.access$300(Jan1C2.java:10)
	at Jan1C2$4.actionPerformed(Jan1C2.java:160)
	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
	at java.awt.Component.processMouseEvent(Component.java:6288)
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
	at java.awt.Component.processEvent(Component.java:6053)
	at java.awt.Container.processEvent(Container.java:2041)
	at java.awt.Component.dispatchEventImpl(Component.java:4651)
	at java.awt.Container.dispatchEventImpl(Container.java:2099)
	at java.awt.Component.dispatchEvent(Component.java:4481)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
	at java.awt.Container.dispatchEventImpl(Container.java:2085)
	at java.awt.Window.dispatchEventImpl(Window.java:2478)
	at java.awt.Component.dispatchEvent(Component.java:4481)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:643)
	at java.awt.EventQueue.access$000(EventQueue.java:84)
	at java.awt.EventQueue$1.run(EventQueue.java:602)
	at java.awt.EventQueue$1.run(EventQueue.java:600)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
	at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
	at java.awt.EventQueue$2.run(EventQueue.java:616)
	at java.awt.EventQueue$2.run(EventQueue.java:614)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:613)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
CONSTRUÍDO COM SUCESSO (tempo total: 37 segundos)

nel:

Oi!

Seu erro é nessa linha, provavelmente:

at Jan1C2.jButton5ActionPerformed(Jan1C2.java:251)

Não sei qual linha isso representa no que tu postou, mas esse erro é basicamente isso:

view plaincopy to clipboardprint?

String s  = null;

s.trim();

Realize um debug em seu código e veja essa linha, pode haver algo do tipo.
Abraços.

É nesse abaixo.

private void jButton5ActionPerformed(java.awt.event.ActionEvent evt) {                                         
   String agente="", ip="";
   try {  
      Scanner scanner = new Scanner(new File("C:/Users/YPY/Documents/agente.txt"));  
         while (scanner.hasNext()) {  
            agente = scanner.nextLine();
         }  
         scanner.close();  
         }catch (IOException e) {  
             e.printStackTrace();  
          }
   
   try {  
           Scanner scanner = new Scanner(new File("C:/Users/YPY/Documents/ip.txt"));  
           while (scanner.hasNext()) {  
           ip = scanner.nextLine();
           }  
           scanner.close();  
        }catch (IOException e) {  
            e.printStackTrace();  
        }  
   ConectaBd conect = new ConectaBd();
   ResultSet resultado = conect.conecta(agente,ip);
        try {
           if (resultado.next()){
              String id = resultado.getString("id");
              String cliente = resultado.getString("cliente");
              String destino = resultado.getString("destino");
                  
              if (destino.length() == 12){
                 destino = destino.substring(2);
              }
              jTextField4.setText(id);
              jTextField6.setText(destino);
              jTextField5.setText(cliente);
           }
           else{
              jTextField4.setText("");
              JOptionPane.showMessageDialog(null, "NUMERO NÃO ENCONTRADO!", "", JOptionPane.WARNING_MESSAGE);
           }

        }catch (SQLException ex) {
            Logger.getLogger(Jan1C2.class.getName()).log(Level.SEVERE, null, ex);
         }
}
lucasportela

Pelo erro, está dizendo que sua consulta está incorreta, ao invés de imprimir uma mensagem na exceção, por favor, deixe mostrar o stacktrace, senão não ajuda muito.

Verifica se o nome das colunas e da tabela estão corretos, algum erro de sintaxe

nel

lucasportela:
nel,

catch (ClassNotFoundException ex) {  
      System.out.println("Não foi possível carregar o driver.");  
   // ex.printStackTrace();  
      return null;  
}

Veja que na saída ele imprimiu que não foi possível carregar o driver, sendo assim, faz todo sentido o que o champs falou.

E o NullPointer ocorre na linha

if (resultado.next()){

Porque ele retornou null e tentou buscar o proxímo.

É pior do que eu pensei.

Pedro Ribeiro, não se trata exceção dessa forma cara e se resolver, por algum motivo tratar assim, sempre acompanhe o log e faça a verificação no retorno do método, verificando se não terá um retorno nulo. Na pressa, questionei erroneamente o cara, mas na realidade, está correte. A falta de um driver de JDBC não pode gerar uma exceção desse tipo.

P
run:
Problema com o SQL
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
	at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
	at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1116)
	at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:344)
	at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2333)
	at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2370)
	at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2154)
	at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:792)
	at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
	at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
	at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:381)
	at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:305)
	at java.sql.DriverManager.getConnection(DriverManager.java:582)
	at java.sql.DriverManager.getConnection(DriverManager.java:185)
	at ConectaBd.conecta(ConectaBd.java:20)
	at Jan1C2.jButton5ActionPerformed(Jan1C2.java:249)
	at Jan1C2.access$300(Jan1C2.java:10)
	at Jan1C2$4.actionPerformed(Jan1C2.java:160)
	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
	at java.awt.Component.processMouseEvent(Component.java:6288)
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
	at java.awt.Component.processEvent(Component.java:6053)
	at java.awt.Container.processEvent(Container.java:2041)
	at java.awt.Component.dispatchEventImpl(Component.java:4651)
	at java.awt.Container.dispatchEventImpl(Container.java:2099)
	at java.awt.Component.dispatchEvent(Component.java:4481)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
	at java.awt.Container.dispatchEventImpl(Container.java:2085)
	at java.awt.Window.dispatchEventImpl(Window.java:2478)
	at java.awt.Component.dispatchEvent(Component.java:4481)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:643)
	at java.awt.EventQueue.access$000(EventQueue.java:84)
	at java.awt.EventQueue$1.run(EventQueue.java:602)
	at java.awt.EventQueue$1.run(EventQueue.java:600)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
	at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
	at java.awt.EventQueue$2.run(EventQueue.java:616)
	at java.awt.EventQueue$2.run(EventQueue.java:614)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:613)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Caused by: java.net.ConnectException: Connection timed out: connect
	at java.net.PlainSocketImpl.socketConnect(Native Method)
	at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:351)
	at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:213)
	at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:200)
	at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
	at java.net.Socket.connect(Socket.java:529)
	at java.net.Socket.connect(Socket.java:478)
	at java.net.Socket.<init>(Socket.java:375)
	at java.net.Socket.<init>(Socket.java:218)
	at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:257)
	at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:294)
	... 54 more
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
	at Jan1C2.jButton5ActionPerformed(Jan1C2.java:251)
	at Jan1C2.access$300(Jan1C2.java:10)
	at Jan1C2$4.actionPerformed(Jan1C2.java:160)
	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
	at java.awt.Component.processMouseEvent(Component.java:6288)
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
	at java.awt.Component.processEvent(Component.java:6053)
	at java.awt.Container.processEvent(Container.java:2041)
	at java.awt.Component.dispatchEventImpl(Component.java:4651)
	at java.awt.Container.dispatchEventImpl(Container.java:2099)
	at java.awt.Component.dispatchEvent(Component.java:4481)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
	at java.awt.Container.dispatchEventImpl(Container.java:2085)
	at java.awt.Window.dispatchEventImpl(Window.java:2478)
	at java.awt.Component.dispatchEvent(Component.java:4481)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:643)
	at java.awt.EventQueue.access$000(EventQueue.java:84)
	at java.awt.EventQueue$1.run(EventQueue.java:602)
	at java.awt.EventQueue$1.run(EventQueue.java:600)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
	at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
	at java.awt.EventQueue$2.run(EventQueue.java:616)
	at java.awt.EventQueue$2.run(EventQueue.java:614)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:613)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
G

Um erro está na string sql que faz o select! Voce tenta capturar três: id, cliente e destino mas o seu select só tem select cliente, destino…
voce no sql não está recuperando o id então sugiro que faça o seguinte:

select id, cliente, destino from ....

e não

select cliente, destino from ...

ou então faça select * from …
Espero ter ajudado…
até mais

lucasportela

Quando você instalou o MySQL, você alterou a porta?

coloque a porta que você configurou para acessar, não deve ser a 3306 pra você. Ou reinstale o MySQL com a configuração padrão.

E ainda tem o detalhe que o geraldocantelli falou acima.

P

Achei o problema amigos, eu fechava a conexão antes de retornar o ResultSet, o problema é que seria interessante eu fechar essa conexão, alguma ideia de como fazer isso sem atrapanhar o aplicativo?

public class ConectaBd {
   public static ResultSet conecta(String agente, String ip){
       
      String driver = "com.mysql.jdbc.Driver"; //Classe do driver JDBC
      String banco = "ypy_trix"; //Nome do Banco criado
      String usuario = "preditivo"; //Usuário do banco
      String senha = "ypy1212"; //Senha de conexão
      String str_conn = "jdbc:mysql://" + ip + ":3306/" + banco; //URL de conexão
      
      try 
         {
             Class.forName(driver);
             Connection conn = DriverManager.getConnection(str_conn, usuario, senha);
             Statement stmt = conn.createStatement();
             String sql = "SELECT id, destino, cliente FROM active_calls where agente = '" + agente + "'";
             ResultSet rs = stmt.executeQuery(sql);
       // FOI SO COMENTAR ESSE LINHA =>  conn.close();
             return (rs);
             
          }
           catch (ClassNotFoundException ex) {
              System.out.println("Não foi possível carregar o driver.");
              ex.printStackTrace();
              return null;
              
           }
           catch (SQLException ex) {
              System.out.println("Problema com o SQL");
              ex.printStackTrace();
              return null;
           }
      
   }   
}
lucasportela

Você tem quer ter um método que somente cria a conexao, no seu caso, esse conecta ai…ele conecta e já faz uma consulta.

Crie um método para conexão e outro para consulta, sendo no da consulta, você usária o resultset dentro deste método e retornaria o valor da consulta.

a idéia é +ou- essa, apesar de que o exemplo não faz exatamente o que você quer, mas você tem que separar as ações de suas classes, não pode ter um método faz tudo…

private void chutaBateEscanteioCabeceiaFazGol(){}

tem que separar cada funcionalidade

C

Ae nel espertão, ve se agora aprende a analisar o stack trace igual um bom programador java antes de vir dar pedrada. Como vossa senhoria pode ver, está escrito no começo NÃO FOI POSSÍVEL CARREGAR O DRIVER. Não resolveu o problema, mas pelo menos tirou um grande empecilho.

nel

Tsc, eu aceitei a crítica numa boa, não há motivos para estresse. E não tente me julgar, nem o mínimo que seja, por eu ter visto apressado o post do colega e executada uma crítica. E a pergunta que eu lhe fiz faz total sentido, porque não deve acontecer um erro desse tipo devido a uma falha de Driver com esta.

Eu não vi a primeira linha do stacktrace, confesso, mas houve também uma má pratica na execução do código do colega.
Portanto, não sou melhor e nem pior do que ninguém, simplesmente devido a pressa (já que estou no trabalho…) olhei por cima e somente vi o NullPointer.

Abraços.

C

Blz cara, na boa, mas novamente, como toda pessoa que tem gabarito ja formado em java, analisa antes de responder de forma agressiva, é uma falta de respeito inclusive com quem postou o tópico, pois se ele não tivesse visto o detalhe do driver jdbc, poderia ficar dias patinando até achar o erro. Mas eu tenho notado isso de uma forma geral no fórum, então de boa, foi mal se eu pareci meio grosseiro.

nel

Eu não tive a intenção de ser grosseiro quando lhe fiz a pergunta. Era uma pergunta como outra qualquer.
De toda forma o que eu disse estava correto, explicando sobre o erro. A intenção era faze-lo verificar onde estava a referência nula, mas não fui claro.

Está tudo certo, faz parte como um todo.
Abraços!

P

lucasportela:
Você tem quer ter um método que somente cria a conexao, no seu caso, esse conecta ai…ele conecta e já faz uma consulta.

Crie um método para conexão e outro para consulta, sendo no da consulta, você usária o resultset dentro deste método e retornaria o valor da consulta.

a idéia é +ou- essa, apesar de que o exemplo não faz exatamente o que você quer, mas você tem que separar as ações de suas classes, não pode ter um método faz tudo…

private void chutaBateEscanteioCabeceiaFazGol(){}

tem que separar cada funcionalidade

Valeu amigo, vou fazer.

Voce cria uma variável conexao, de que tipo é a mesma?

public boolean conexaoDeCriacao() {
        try {
            String driver = "com.mysql.jdbc.Driver";
            String user = "root";
            String pass = "root";
            String urlPadrao = "jdbc:mysql://localhost:3306/mysql";
            Class.forName(driver);
            conexao = DriverManager.getConnection(urlPadrao,user,pass);
            return true;
        }
        catch (ClassNotFoundException e){
            System.out.println("ERRO: " + e);
        }
        catch (SQLException e) {
            System.out.println("ERRO: " + e);
        }
        return false;
    }
lucasportela

java.sql.Connection

nel

JDBC.

É um artigo aqui do GUJ sobre JDBC, recomendo a leitura :slight_smile:

Criado 15 de setembro de 2011
Ultima resposta 16 de set. de 2011
Respostas 19
Participantes 5