Não consigo compilar código de conexão Mysql

6 respostas
swing

Pessoal, não estou conseguindo fazer uma conexão com o mysql, estou utilizando os códigos:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class ConnectionFactory {
	public static Connection getConnection() throws SQLException {
		try {
			Class.forName("jdbc:mysql://localhost/teste");
			return DriverManager.getConnection("com.mysql.jdbc.Driver","root","12345");
		} catch (ClassNotFoundException e) {
			throw new SQLException(e.getMessage());
		}
	}
}
import java.sql.Connection;
import java.sql.SQLException;

import br.com.caelum.jdbc.ConnectionFactory;

public class TestaConexao {

	public static void main(String[] args) throws SQLException {
		Connection con = ConnectionFactory.getConnection();
		con.close();
	}
}

Quando tento compilar aparece a mensagem:

Alguém sabe como resolver esse problema?
Agradeço desde já qualquer ajuda.

6 Respostas

A

use issoo

import java.sql.DriverManager;
import java.sql.SQLException;
import com.mysql.jdbc.Connection;

public class ConnectionMySQL {



	public static Connection getConnection(String database)
			throws ClassNotFoundException, SQLException {
		String DRIVER = "com.mysql.jdbc.Driver";
		String URL = "jdbc:mysql://localhost/" + database;
		String USUARIO = "root";
		String SENHA = "123456";

		Class.forName(DRIVER);
		Connection con = (Connection) DriverManager.getConnection(URL, USUARIO,
				SENHA);

		return con;
	}

}
e nao esqueça de importar a lib do MYSQL no classpath
A

voce esta invertendo as ordens … pega o exemplo que eu fiz… e ve se voce entende seu erro

elomarns

Identifiquei dois erros no seu código.

Primeiro erro:

Class.forName("jdbc:mysql://localhost/teste");

Nesta instrução você “carrega” o driver do MySQL, logo tem que informar o caminho até ele, que é com.mysql.jdbc.Driver, sendo que você informa a URL do banco de dados. Sendo assim, a instrução correta seria:

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

Segundo erro:

return DriverManager.getConnection("com.mysql.jdbc.Driver","root","12345");

Nesta intrução é retornada uma conexão ao banco de dado de acordo ao que é passado nos argumentos do método getConnection, sendo que o primeiro argumento deve ser a URL do banco de dados, e não o driver do MySQL. Logo, esta instrução deveria ser corrigida para:

return DriverManager.getConnection("jdbc:mysql://localhost/teste","root","12345");
swing

blz, fiz a alteração no código, mas agora o meu main, que chama getConnection(), está reclamando a falta do parâmetro, no caso a string do método - public static Connection getConnection(String database) - só que eu não sei o que devo colocar aí.

A

essa string vc tem q por o nome do seu banco de dados… no seu caso eh “teste”

elomarns
swing:
blz, fiz a alteração no código, mas agora o meu main, que chama getConnection(), está reclamando a falta do parâmetro, no caso a string do método - public static Connection getConnection(String database) - só que eu não sei o que devo colocar aí.
O método getConnection que você postou não tem parâmetro, e nem precisa ter, já que o objetivo deste código é introduzir os conceitos básicos do JDBC, o SGBD utilizado será necessáriamente o MySQL e o banco de dados se chamará teste.

Mas caso você queira usar uma versão do método que recebe como parâmetro a URL do banco de dados, faça a seguinte alteração:

import java.sql.Connection;
 import java.sql.DriverManager;
 import java.sql.SQLException;
 
 public class ConnectionFactory {
 	public static Connection getConnection(String database) throws SQLException {
 		try {
 			Class.forName("com.mysql.jdbc.Driver");
 			return DriverManager.getConnection(database,"root","12345");
 		} catch (ClassNotFoundException e) {
 			throw new SQLException(e.getMessage());
 		}
 	}
 }
Neste caso, você teria que passar o argumento "jdbc:mysql://localhost/teste" ao chamar o método getConnection.

Mas caso você queira usar o método getConnection sem parâmetro algum, já que a URL do banco de dados passada como argumento seria sempre a mesma, faça da seguinte maneira:

import java.sql.Connection;
 import java.sql.DriverManager;
 import java.sql.SQLException;
 
 public class ConnectionFactory {
 	public static Connection getConnection() throws SQLException {
 		try {
 			Class.forName("com.mysql.jdbc.Driver");
 			return DriverManager.getConnection("jdbc:mysql://localhost/teste","root","12345");
 		} catch (ClassNotFoundException e) {
 			throw new SQLException(e.getMessage());
 		}
 	}
 }
Dessa maneira, ao chamar o getConnection no método main você não precisaria passar argumento algum.
Criado 6 de junho de 2007
Ultima resposta 6 de jun. de 2007
Respostas 6
Participantes 3