Conexão

7 respostas
Jonas_Borges

Olá me chamo Jonas e estou começando a estudar Java por conta pelas apostilas da Caelum. Acabei de terminar a apostila de Java e orientação a objetos e comecei a Java para web. Logo no primeiro capítulo o código não compilou. Baixei o driver do MySQL como falado e fiz no eclipse conforme o tutorial, adicionei o driver a biblioteca e adicionei o build path, e nada. Tentei no intellij também conforme vi na internet e também não foi possível, ambos caem na exception: java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost/fj21

Sendo que baixei e coloquei o driver nas bibliotecas.
Segue o código de conexão:

public class ConnectionFactory {

public Connection getConnection() {

    try {
        return DriverManager.getConnection("jdbc:mysql://localhost/fj21", "root", "");
    } catch (SQLException e) {
        throw new RuntimeException(e);
    }

}

}

e o código de teste:

public class TestaConexao {
public static void main(String[] args) {

try {
        Connection connection = new ConnectionFactory().getConnection(); {
            System.out.println("Conexão aberta!");
            connection.close();
        }
    } catch (SQLException e) {
        e.printStackTrace();
    }
}

}

Se alguém souber o que ta dando de errado, agradeceria uma luz

7 Respostas

Jonathan_Medeiros

Eu não vi o Class.forName no seu código de conexão com o BD, eu tenho uma conexão com o MySQL que está conforme abaixo:

public static ConnectionMySQL connection = new ConnectionMySQL();

public static Connection connect() {
         if (connect != null) {
            return connect;
        } else {
            try {
                Class.forName("com.mysql.jdbc.Driver");
                connect = DriverManager.getConnection("jdbc:mysql://localhost/meuBD","root","masterkey");
                System.out.println("Connected!");
                return connect;
            } catch (ClassNotFoundException ex) {
                System.out.println("Driver not found!");
                ex.printStackTrace();
                return null;
            } catch (SQLException ex) {
                System.out.println("Error connecting to the data source!");
                ex.printStackTrace();
                return null;
            }
        }
}
P
  • Colocou o jar do MySql na pasta WEB-INF\lib e adicionou ao build path?
  • Ja tentou colocar o Class.forName( “com.mysql.jdbc.Driver” ); (Antes do return no ConnectionFactory) ?
  • Realmente a senha do teu usuario root é “” ?

Criei um projeto copiando as suas classes aqui… e funcionou de boa…

Só retirei as chaves despois do .getConnection(); do main e depois de connection.close(); e foi…

Jonas_Borges

É que de acordo com a apostila isso não seria mais necessário. Mas coloquei agora no meu método e agora recebo essa menssagem

Error:(21, 5) java: missing return statement

Jonas_Borges

Opa, coloquei o class for name agora e deu a seguinte menssagem: Error:(21, 5) java: missing return statement.

Sim, a senha do root é vazia, e quando a biblioteca, baixei o driver no site do MySQL e fiz conforme indicado, coloquei ele no JRE System Library e com o botão direito fui em add build path. fiz também com intellij indo em Project Structure -> Modules -> Dependecies e adicionei o .jar

Jonathan_Medeiros

Acredito que seja porque você não aplicou o return, o método estático do tipo Connection espera um retorno do tipo dele no final!

Jonas_Borges

acredito que esteja, só não estou colocando dentro de uma variável. Mas assim que chegar em casa, vou tentar colocar o DriverManager e o getConnection dentro de uma variavel como no seu exemplo.

lvbarbosa

Só passando para adicionar uma informação útil: o Class.forName não é mais necessário desde o JDBC 4.

Fonte: https://docs.oracle.com/javase/tutorial/jdbc/basics/connecting.html

Criado 6 de julho de 2017
Ultima resposta 7 de jul. de 2017
Respostas 7
Participantes 4