Driver Mysql não funciona?

5 respostas
serp

Estou tentando compilar uma classe que faz ligacao com o um BD Mysql e não estou conseguido, já coloquei o mysql-connector-java-3.0.9-stable-bin.jar no diretório j2sdk1.4.0jrelibext e coloquei o arquivo no ClassPath mas todas as vezes que eu o javac aparece o mesmo erro porque???


Código

Class.forName("com.mysql.jdbc.Driver");

conn = DriverManager.getConnection(
  "jdbc:mysql://localhost/Producao");

Erro

F:ProducaoCobrancasrcdbdao>javac GenericDAO.java

GenericDAO.java:17: unreported exception java.lang.ClassNotFoundException; must be caught or declared to be thrown

Class.forName(com.mysql.jdbc.Driver);

^

GenericDAO.java:19: unreported exception java.sql.SQLException; must be caught or declared to be thrown

conn = DriverManager.getConnection(

^

GenericDAO.java:26: unreported exception java.sql.SQLException; must be caught or declared to be thrown

conn.close();

^

3 errors

5 Respostas

cv1

http://java.sun.com/docs/books/tutorial/essential/exceptions/ :wink:

dsiviotti

Não sei se você já pôs, mas esse código

Class.forName("com.mysql.jdbc.Driver"); 
conn = DriverManager.getConnection("jdbc:mysql://localhost/Producao");

deveria estar parecido com isso:

try {
    Class.forName ("com.mysql.jdbc.Driver");
    conn = DriverManager.getConnection(jdbc:mysql://localhost/Producao"); 
} catch (ClassNotFoundException e) {
    System.out.println (e.printStackTrace());
}

ou bota throws no cabeçalho do método.

serp

Valeu pessoal, parece que o problema era a falta do try / catch, obrigado!

Porém eu não entendi o porque da obrigatoriedade?

dsiviotti

Esta é a implementação do método forClass:

public static Class forName(String className) 
                throws ClassNotFoundException{
        return forName0(className, true, ClassLoader.getCallerClassLoader());
    }

O throws no cabeçalho te obriga a tratar ou a passar adiante (acima) o tratamento.

cv1

Existem dois tipos de exceptions em Java: as checadas (derivadas de Exception) e as nao checadas (derivadas de RuntimeException). Quem quer que tenha desenhado estas APIs que vc esta usando (no caso, a JDBC é da Sun mesmo) achou bonito fazer todo mundo checar se acontecesse algum erro e ponto final. :smiley:

Na verdade escolher se vc vai usar uma exceção checada ou não requer bem mais pensamento que isso, mas não vamos entrar nesse assunto agora… ou vamos? :smiley:

Criado 30 de janeiro de 2004
Ultima resposta 31 de jan. de 2004
Respostas 5
Participantes 3