Problemas na conexao com MySQL

olá pessoal, estou com uma dúvida e gostaria que, se possível, vcs me ajudassem pois não estou conseguindo
efetuar a conexao do banco de dados.

Minha classe “Conexao” é a que segue:

[code]import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class Conexao{
public Connection conectar(){
// base de dados é “test”
String url = “jdbc:mysql://localhost/test”;
String usuario = “root”;
String senha = “1234”;

try{
  Class.forName("com.mysql.jdbc.Driver").newInstance();
  Connection conn = DriverManager.getConnection(url, usuario, senha);
  return conn;
}
catch(SQLException ex){
  System.out.println("SQLException: " + ex.getMessage());
  System.out.println("SQLState: " + ex.getSQLState());
  System.out.println("VendorError: " + ex.getErrorCode());
  return null;
}
catch(Exception e){
  System.out.println("Problemas ao tentar conectar com o banco " + 
     "de dados: " + e);
  return null;
}

}
}[/code]

e a classe que “TestaConexao” é a seguinte:

[code]import java.sql.Connection;

public class TestaConexao{
public static void main(String args[]){
Connection conn = new Conexao().conectar();
// testa se a conexão foi efetuada com sucesso
if(conn != null)
System.out.println(“Conexão efetuada com sucesso!”);
else
System.out.println(“Problemas!”);
}
} [/code]

ao executá-la, aparece o seguinte erro:

SQLException: Communications link failure

Last packet sent to the server was 0 ms ago.
SQLState: 08S01
VendorError: 0
Problemas!

Estou usando o driver: mysql-connector-java-5.1.6-bin.jar

Desde já fico grato!

Tenta jdbc:mysql://localhost:3306/test,por favor se
conseguir resolver me manda um mp erro curioso>

duas classes…

estas funcionamm…

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/teste2","root","");
      
    }

catch(ClassNotFoundException e){
throw new SQLException(e.getMessage());
}

    }
}

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

public class TestaConexao {

public static void main (String[] args) {
    
    try {
    Connection con=ConnectionFactory.getConnection();

System.out.println(“bancoconectado”);

    }
 
    catch(SQLException e){
        e.printStackTrace();
    }
    
    }

nao é sua senha mysql ? …

ou esta…

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

public class TesteBancoDados {

public static void main(String[]args) {
    try {
        Class.forName("com.mysql.jdbc.Driver");
    Connection con=DriverManager.getConnection("jdbc:mysql://localhost/teste2","root","");
    System.out.println("Banco Conectado");
    con.close();
    }
    catch(SQLException e) {
        e.printStackTrace();
    }
    catch(ClassNotFoundException e){
        e.printStackTrace();
         }
}

}

DanielF

fiz o que vc sugeriu e ainda continuou dando erros:

SQLException: Communications link failure

Last packet sent to the server was 0 ms ago.
SQLState: 08S01
VendorError: 0
Problemas!

na linha:

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

tira esse .newInstance(); e testa novamente.

Se não funcionar da uma olhadinha no codigo deste forum:
http://www.guj.com.br/posts/list/57338.java

falows

Olá merso

Cara eu gosto de criar este me metodo statico para não precisar instanciar depois

public class Conexao{   
   public static Connection conectar(){  
         // base de dados é "test"  
   
     String url = "jdbc:mysql://localhost/test";  
     String usuario = "root";  
     String senha = "1234";     
       
     try{  
         Class.forName("com.mysql.jdbc.Driver").newInstance();  
         Connection conn = DriverManager.getConnection(url, usuario, senha);  
         return conn;  
     }  
     catch(SQLException ex){  
       System.out.println("SQLException: " + ex.getMessage());  
       System.out.println("SQLState: " + ex.getSQLState());  
       System.out.println("VendorError: " + ex.getErrorCode());  
       return null;  
     }  
     catch(Exception e){  
       System.out.println("Problemas ao tentar conectar com o banco " +   "de dados: " + e);  
       return null;  
     }  
   }  
}  

E assim ficaria a tua classe de teste


    import java.sql.Connection;  
      
    public class TestaConexao{  
      public static void main(String args[]){  
        Connection conn = Conexao.conectar();  
        // testa se a conexão foi efetuada com sucesso  
        if(conn != null)  
          System.out.println("Conexão efetuada com sucesso!");  
        else  
         System.out.println("Problemas!");  
     }  
   }   

Outra pergunta só pra garntir, você já colocou o driver do my sql no seu projeto?

Se já tiver colocado da uma revisada no usuario e senha, pois as String que você esta passando estão corretas

Flw.

E a dica do FilhoDoRei tbm é importante esse newIstance você deve tirar

Bom dia a todos.

Voltando ao “Problemas na conexao com MySQL”.

Rodei teu exemplo e mostrou o mesmo erro.

Esse é um erro de acesso. Troca “1234” por “root”.

Ah, não esqueça do driver.

t+

Dae alison:

Pode ser problema de acesso mas não creio que alterando 1234 por root ira funcionar.

Ele tem que verificar com qual usuario e senha ele concegue conectar no banco, primeiramente fora da aplicação java e depois de testado sim passar as strings de conexão corretamente:

Por defaul o mysql vem com o usuario root sem nehuma senha cadastrada, portanto deveria ficar assim:

String Usuario = “root”;
String Senha = “”;

Da forma que você falou ele estaria alterando a senha para root que provavelmente não seja esta e sim a string vazia.

Flw

Ok, Paulo Faultich.

Estou com a versão 5.0. Por defaul, o usuário é “root” e senha “root”.

Não consigo acessar com a senha “” ou “1234”, mostra o erro dele.

Vamos deixar ele testar.

A legal saber cara, as versões anteriores vem com a senha vazia.

É vamos deixar ele testar não sabemos a versão que ele tem.

Flw.

Coloquei usuario e senha como “root”

Fiz o que o amigo FilhoDoRei disse, a ainda nao deu certo, aparece o seguinte erro:

SQLException: Communications link failure

Last packet sent to the server was 0 ms ago.
SQLState: 08S01
VendorError: 0
Problemas!

====================================================

Respondendo à pergunta do amigo Paulo Faultich:

Eu baxei o driver mysql-connector-java-5.1.6-bin.jar
no site http://www.mysql.com/ e no projeto o coloquei em Libraries -> ADD Jar/Folder

e mesmo assim nao tive êxito

====================================================

Respondendo à pergunta do amigo dev-ailson:

Já troquei a senha para “root”, coloquei o driver no projeto
e ainda nao consegui.

=====================================================

Fico no aguardo de mais “alternativas” para o meu caso

Grato.

Bom o primeiro problema era que você não tinha o driver do mysql no seu projeto para se comunicar com o java.

Agora vamos a outra perunta.

Você tem o mysql instalado na sua maquina?

Se sim você consegue entrar nele pela linha de comando?

Fico no aguardo!

Poisé… nao tenho.
Esse mysql que vc falou seria o: “Connector/ODBC - MySQL ODBC driver”
que tem no site?

Grato.

Logo vi! Hehehehehe

:stuck_out_tongue:

Cara tens que baixar o banco de dados:

http://dev.mysql.com/downloads/mysql/5.1.html

Quando você passa as Strings

String url = “jdbc:mysql://localhost/test”;
String usuario = “root”;
String senha = “root”;

Você ta dizendo que o Java devera procurar pelo banco test na sual própria maquina por isso o localhost

o root é o usuario que vem por defaul quando você instala o banco.

e segundo nosso amigo essa versão que você instalar provavelmente venha com a senha root tbm

Depois que você instalar pede umas dicas ai para testar primeiro por linha de comando.

Boa sorte.

OK Paulo Faulstich … já está instalado…
e agora?

bom… nao sei o motivo, mas quando altero o nome do bd de “test” para qualquer outro nome,
aparece que dá Problemas!, porém, se deixo como “test” o erro nao aparece e tudo funciona :smiley:

Como faco para inserir os dados por exemplo?

  1. Você já está conseguindo entrar no prompt do mysql digitando “mysql -p” e autenticando?

O que você define por Test é o banco de dados em si. O alias dele, então é natural que se voce mudar voce nao vai acessar.

Pra criar databases, apos ter entrado no prompt e se autenticado como root digite:
CREATE DATABASE NOMEDODATABASE;

Depois voce pode mudar o nome ai.

Pra inserir dados, vai no google e procura por “mysql insert” ou “apostila mysql”.

Dae rapa ta evoluindo rapido.

Cara faz o seguinte para inserir dados procura por prepared statement pois ele já trata problemas de string com apostrofe e tbm pq é uma boa pratica, lógico que mais adiante tu pode usar hibernate ou jpa para persistir os teus dados mas vamos um passo de cada vez, hehe.

Não procurei muito mas neste link abaixo tem um exemplo, não é tão bom mas a pesquisa vou deixar pra ti.

http://java.sun.com/docs/books/tutorial/jdbc/basics/prepared.html


Bom pelo jeito tem algumas coisa que você ta fazendo que nem sabe como.

vamos passo a passo.

Pelo que vi você quer fazer uma aplicação em java que usa o banco de dados (mysql), pois bem.

Requisitos.

Ter o mysql instalado na sua maquina ou em outra maquina que você va acessar remotamente (no seu caso ta instalado na sua própria maquina - por isso o localhost)

Depois ter o driver do mysql no seu projeto para que a aplicação saiba com quem e como se comunicar com o seu banco.

Ter uma classe responsavel por conectar no banco.

Até aqui tudo ok.

Vamos a algumas explicações do banco e como usalo.

primeiro se você usa windows digite no pronpt de comando

mysql -u root -p root

dessa forma você vai entrar no banco como administrador

-u = de usuario
-p = password

Você deve usar o mesmo usuario e senha da aplicação java ja que a mesma esta funcionando.

Uma pergunta a senha realmente é root ou é vazia?

Depois que você digitar o mysql -u nome do usuario - p senha do usuario aperte enter, pronto você vai estar dentro do banco, para listar os demais bancos que estão disponiveis você usa o comando.

show databases - depois aperte enter

vai listar os bancos que você tem disponivel que bem provavelmente dentro dos que forem listaos vai aparecer o “teste”

depois de ter visualizado você deve entrar no seu banco de teste com o seguinte comando.

use teste - aperte enter

pronto agora você pode criar a tabela dentro de seu banco de teste para começãr a pensar em inserir alguma coisa.

para criar tabela procura por “create table mysql” o google deve te mostrar alguma coisa.

Na minha opinião o ideal é que tu execute todos os estes passos no banco para depois dar continuidade no java.

Qualquer duvida posta ai que na medida do possivel vou te ajudando.

Flw cara.

Falto a dica se você usa linux.

Se você usa linux ao invés de prompt de comando ( Dos ) como no window entre em um terminal.

Os comandos são iguais.

Flw!! bons estudos e boa sorte.