Problema com o MySQL (Class.forName)

15 respostas
J

Estou começando a estudar banco de dados juntamente com java, hoje andei lendo sobre o assunto e resolvi fazer alguns testes, criei umas classes com a ajuda de um amigo e um pequeno database o problema é que não estou conseguindo fazer funcionar, o programa é bem simples o banco também o grande problema é que sou iniciante e ainda não sei como resolver isso. Eis meu código.

package testedb;

import java.sql.*;

public class TesteDB {
            
     public static void main(String args[])   
      {  
  
        
      // A captura de exceções SQLException em Java é obrigatória para usarmos JDBC.   
      // Para termos acesso ao objeto con, ele deve ter um escopo mais amplo que o bloco try  
        
      Connection con = null;         
  
      try   
      {  
          // Este é um dos meios para registrar um driver   
          //Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").getInstance();
          Class.forName("com.mysql.jdbc.Driver");  
         
          // Registrado o driver, vamos estabelecer uma conexão  
          con = DriverManager.getConnection("jdbc:teste_db","","");  
  
          // Após estabelecermos a conexão com o banco de dados  
          // Utilizamos o método createStatement de con para criar o Statement  
          Statement stm = con.createStatement();    
     
          // Vamos executar o seguinte comando SQL :  
          String SQL = "Select id_cd, nome_cd , nome_banda, num_faixas from cds";  
  
          // Definido o Statement, executamos a query no banco de dados  
          ResultSet rs = stm.executeQuery(SQL);  
     
          // O método next() informa se houve resultados e posiciona o cursor do banco  
          // na próxima linha disponível para recuperação  
          // Como esperamos várias linhas utilizamos um laço para recuperar os dados  
          while(rs.next())  
          {  
  
             // Os métodos getXXX recuperam os dados de acordo com o tipo SQL do dado:  
             String tit = rs.getString("nome_cd");  
             String aut = rs.getString("nome_banda");  
             int totalFaixas = rs.getInt("num_faixas");  
  
             // As variáveis tit, aut e totalFaixas contém os valores retornados   
             // pela query. Vamos imprimí-los  
  
             System.out.println("Titulo: "+tit+" Autor: "+aut+"Tot. Faixas: "+totalFaixas);  
          }  
  
      }  
      catch(SQLException e)  
      {  
          // se houve algum erro, uma exceção é gerada para informar o erro   
          e.printStackTrace(); //vejamos que erro foi gerado e quem o gerou  
      }  
      finally  
      {  
         try   
         {  
            con.close();  
         }  
         catch(SQLException onConClose)  
         {  
             System.out.println("Houve erro no fechamento da conexão");  
             onConClose.printStackTrace();  
         }  
      } // fim do bloco try-catch-finally  
      } // fim da main  
         
   } // fim de nosso primeiro exemplo !

e o erro :
Exception in thread "main" java.lang.NullPointerException
at testedb.TesteDB.main(TesteDB.java:62)
Java Result: 1

Desde já agradeço a atenção de vocês e desculpa se estou fazendo perguntas idiotas, é que realmente me interessei pelo assunto, mas estou apenas nas primeiras aulas de java.

15 Respostas

J

Ah esqueci de dizer estou usando o Netbeans e erro está no Class.forName

B

http://www.caelum.com.br/apostila-java-web/bancos-de-dados-e-jdbc/

Também, para adicionar o driver do MySQL no teu projeto do NetBeans:

Dentro do teu projeto, ache uma pasta chamada Bibliotecas ou Libraries. Clique com o botão direito em cima dela e escolha Adicionar Biblioteca. Na lista que aparecer, selecione MySQL JDBC Driver.

J

Pois é cara, eu to lendo essa apostila e tal. Mas queria solucionar esse probleminha o quanto antes, já fiz o esquema de adicionar a biblioteca como tu disse, mas não deu certo D: alguma outra dica?

B

Tá ainda dando o erro com o Class.forName? Já deu um catch no ClassNotFoundException que ele atira?

Já ligou o banco de dados? Já criou um usuário e senha? Criou o banco? Criou as tabelas? Tem algum dado nessas tabelas?

J

Bruno Laturner:
Tá ainda dando o erro com o Class.forName? Já deu um catch no ClassNotFoundException que ele atira?

Já ligou o banco de dados? Já criou um usuário e senha? Criou o banco? Criou as tabelas? Tem algum dado nessas tabelas?

Tá dando erro ainda cara :S, vou tentar fazer o catch no ClassNotFoundException. E tenho tudo certinho no banco, usuário, database, tabelas, e tem dados nelas.

J

Cara fiz o try catch como tu disse, dai retornou um erro diferente.

java.sql.SQLException: No suitable driver found for jdbc:mysql:teste_db

at java.sql.DriverManager.getConnection(DriverManager.java:604)

at java.sql.DriverManager.getConnection(DriverManager.java:221)

at testedb.TesteDB.main(TesteDB.java:29)

Exception in thread main java.lang.NullPointerException

at testedb.TesteDB.main(TesteDB.java:68)

Java Result: 1

Diz que não encontrou driver né? DDD:

B

Tenta com “jdbc:mysql://endereço_do_teu_servidor/nome_do_banco” e verifique se o driver tá nas tua biblioteca.

JARDEL_RODRIGUES

foi esse o driver que voce adicionou no projeto ?
http://dev.mysql.com/downloads/connector/j/

se for está correto verifica se colocou certo mesmo

botão direito no projeto
propriedades > bibliotecas > adicionar jar

J

Exclui o driver e coloquei de novo e fiz uns ajustes, ai deu certo. Muito obrigado pela atenção.

J

Jardel.ads:
foi esse o driver que voce adicionou no projeto ?
http://dev.mysql.com/downloads/connector/j/

se for está correto verifica se colocou certo mesmo

botão direito no projeto
propriedades > bibliotecas > adicionar jar

Cara é esse mesmo que eu tô usando, como eu já disse adicionei ele de novo e fiz uns ajustes no código e agora tá tudo certinho.
Muito obrigado pela atenção.

JARDEL_RODRIGUES

Toda vez que criar um tópico, ao resolver o problema você edita o tópico e coloca [RESOLVIDO]

freakazoid

Uma dica para não ter mais este tipo de problema é sempre após jogar algum jar no seu projeto é adicioná-lo manualmente ao Build Path do projeto. É só clicar com o botão direito em cima do jar, Build Path/Add Build Path.

Abs!

freakazoid

Também é possível adicionar vários jars de forma massiva em Build Path/Configure Build Path…/add external jar.

JARDEL_RODRIGUES

freakazoid

Mais como ele ta usando o Net Beans, essa função de build path > add build path não é necessária, isso ocorre apenas no eclipse.
No NetBeans basta adicionar o jar no projeto que roda.

freakazoid

Jardel.ads:
freakazoid

Mais como ele ta usando o Net Beans, essa função de build path > add build path não é necessária, isso ocorre apenas no eclipse.
No NetBeans basta adicionar o jar no projeto que roda.

Jardel.ads, obrigado pela dica.
Nunca usei NetBeans, vou baixar esse carinha dar uma fuçada. Abs!

Criado 25 de fevereiro de 2013
Ultima resposta 25 de fev. de 2013
Respostas 15
Participantes 4