Caelum TestaConexao.java

12 respostas
heliob

Olá,

Peguei a apostila da Caelum e estou estudando J2EE. Criei essas suas classes:
package br.com.caelum.jdbc;
import java.sql.*;
public class ConnectionFactory {
    public static Connection getConnection() throws SQLException {
        try {
               Class.forName("com.mysql.jdbc.Driver");
               System.out.println("Conectando ao banco");
               return DriverManager.getConnection("jdbc:mysql://localhost/teste", "root", "root");
        } catch (ClassNotFoundException e) {
               throw new SQLException(e.getMessage());
        }
 }

}
package br.com.caelum.jdbc.teste;
import java.sql.*;
import br.com.caelum.jdbc.*;
public class TestaConexao {
	public static void main(String[] args) throws SQLException, ClassNotFoundException {
		Connection con = ConnectionFactory.getConnection();
		con.close();
	}
}
Já copiei o .jar do mysql que baixei do próprio site da MySQL pra pasta do projeto e dei um "Add to Build Path". Porém estou recebendo o seguinte erro ao dar CTRL+F11:
Conectando ao banco
Exception in thread "main" com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '????????????????' at line 1
   at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1026)
   at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
   at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3515)
   at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3447)
   at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1951)
   at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2101)
   at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2548)
   at com.mysql.jdbc.ConnectionImpl.configureClientCharacterSet(ConnectionImpl.java:1768)
   at com.mysql.jdbc.ConnectionImpl.initializePropsFromServer(ConnectionImpl.java:3444)
   at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2062)
   at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:723)
   at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:298)
   at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:282)
   at java.sql.DriverManager.getConnection(libgcj.so.90)
   at java.sql.DriverManager.getConnection(libgcj.so.90)
   at br.com.caelum.jdbc.ConnectionFactory.getConnection(ConnectionFactory.java:8)
   at br.com.caelum.jdbc.teste.TestaConexao.main(TestaConexao.java:7)

Alguém poderia me dar alguma luz?
Abraços,
Hélio

12 Respostas

Pedrosa

Qual a versão do jar do mysql vc pegou e qual a sua versão mysql instalado?, veja se é compativel!

heliob

mysql-connector-java-5.1.7-bin.jar
mysql Ver 14.12 Distrib 5.0.67, for debian-linux-gnu (i486) using readline 5.2

Abraços,
Hélio

M

Porque no seu PreparedStatement você tem tropocentos pontos de interrogação? Use apenas um!

String sql = "select * from contatos where id = ?"; // só uma vez!
heliob

marcobiscaro2112:
Porque no seu PreparedStatement você tem tropocentos pontos de interrogação? Use apenas um!

String sql = "select * from contatos where id = ?"; // só uma vez!


As classes que estou usando são apenas as que eu postei!
Nem cheguei criar um PreparedStatment ainda…

Abraços
Hélio

peczenyj

Ok, vc esta executando o TestaConexao e sequer consegue abrir, certo?

Bom, vc consegue acessar o banco de dados através do client mysql instalado na sua maquina?

prompt$ mysql -u root -proot -h localhost -D teste

Se sim, qual a versão desse mysql? E qual a versão do java que executa o seu TestaConexao ? Talvez vc esteja usando um driver incompativel com a versão do banco…

M

Opa… verdade… é que o console afirma um erro de sintaxe SQL com a String ???. Mas o problema vem da linha 8 da classe ConnectionFactory. Aí já não sei o que é…

heliob

peczenyj:
Ok, vc esta executando o TestaConexao e sequer consegue abrir, certo?
Bom, vc consegue acessar o banco de dados através do client mysql instalado na sua maquina?

prompt$ mysql -u root -proot -h localhost -D teste

Se sim, qual a versão desse mysql? E qual a versão do java que executa o seu TestaConexao ? Talvez vc esteja usando um driver incompativel com a versão do banco…

Sim, consigo sim conectar via prompt, via phpmyadmin tbm a base de dados.

As versões que estou usando são:
jar: mysql-connector-java-5.1.7-bin.jar
mysql: mysql Ver 14.12 Distrib 5.0.67, for debian-linux-gnu (i486) using readline 5.2

Abraços,
Hélio

peczenyj

veja essa thread:

http://forums.sun.com/thread.jspa?threadID=5360285

especialmente a parte do

java -version
sedmalakian

Confirme a senha do usuario root=“root”;
verifique se realmente existe uma database teste no banco

D

boa noite, estou fazendo este curso na caelum, as principais verificaçoes que vc tem que fazer é verificar se realmente o mysql esta instalado corretamente, outro ponto verifique se o seu jar esta contido no workspace do projeto, caso nao ele nao achara conexao,

S

Também tive o mesmo problema pra conectar o Java com o mysql.
A primeira coisa que fiz foi instalar o MySQL 5, setar a senha para “root” e criar as tabelas.

1 - Verifique primeiramente se você consegue logar no MySQL com a senha do root que você criou.
2 - Crie uma database. Exemplo:

create DATABASE teste;

3 - Crie uma table. Exemplo:

create table contatos (
id BIGINT NOT NULL AUTO_INCREMENT,
nome VARCHAR(255),
email VARCHAR(255),
endereco VARCHAR(255),
primary key (id) );

Após criar a sua database / table, faça os teste de conexão com o ConnectionFactory!
Náo funcionou ainda???!!!

Veja a versão do seu driver do MySql. E procure um compativel.
Suas classes estão corretas.

Espero ter ajudado.

heliob

Olá galera,

Obrigado a todos, já consegui solucionar o problema.

Eu consegui solucionar instalando o jre 1.6, o que estava era o 1.5…

Dai lá no eclipse troquei o JRE pelo mais novo…

Agora vou dar continuidade com o curso…

Abraços,
Hélio

Criado 2 de fevereiro de 2009
Ultima resposta 6 de fev. de 2009
Respostas 12
Participantes 7