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
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;
}
}
}
- 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…
É 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
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
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!
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.
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