URL`s para o JDBC [CONCLUÍDO]

4 respostas
cassio

Olá Pessoal!

Eu nunca fui muito amigo de banco de dados e sempre “fugi” do assunto, mesmo quando só programava em C/C++. Agora que estou aprendendo Java, vi que é importante saber o JDBC, então comecei a estudar pra ver se aprendo!
Porém, não consigo entender algumas coisas…
Instalei o mysql em minha máquina e fiz o download do Connector/J. Extrai o pacote do Connector/J em um diretório aqui e tal… o mysql tá rodando direitinho também…
Na hora de escrever um código básico para simplesmente fazer a conexão com o banco de dados, surge a dúvida… como funciona esse esquema de endereó para o driver? Tipo:

String url = "jdbc:mysql://bla bla bla";

ou

String driver = "com.imaginary.sql.msql.MsqlDriver";

A partir dos locais onde instalei o mysql e o Connector/J na minha maquina, o que colocar nestas Strings? Como funciona esse formato de URL?

Obrigado!

4 Respostas

kaique

Cara…seguinte:

String driver = “com.imaginary.sql.msql.MsqlDriver”;

Aqui vc coloca o nome completo da classe q comunica com o banco…o driver mais atual do mysql usa a classe “com.mysql.jdbc.Driver”. Para isso funcionar basta vc colocar o driver do mysql no classpath d sua aplicação.

String url = “jdbc:mysql://bla bla bla”;

Aqui vc tem q escrever a url que indica onde está o seu banco. Um exemplo de url pode ser “jdbc:mysql://127.0.0.1:3306/teste”, onde “127.0.0.1” eh o endereço da makina onde esta o banco, “3306” eh a porta que vc vai usar pra conectar com o banco(esse valor eh default) e “teste” eh o nome do banco q vc deseja se conectar. Tb tem outra forma de url, onde vc passa tb o usuario e a senha do banco.

Qualker coisa posta aew…
Vlw!!

cassio

Pessoal estou tentando de todo o jeito rodar o código abaixo:

import java.sql.*;

public class testeDB {	

	public static void main(String args[]) {
		Connection connection = null;
		Statement statement = null;
		
		try {
			Class.forName("com.mysql.jdbc.Driver");
			connection = DriverManager.getConnection("jdbc:mysql://localhost/test");
			
			statement = connection.createStatement();			
		}
		catch(Exception e) {
			System.out.println("Excecao!");
			e.printStackTrace();
		}	
	}
}

Mas não está dando certo! O código compila numa boa, porém na hora de execyutar não vai nem ferrando… Coloquei o caminho para o driver assim:

JAVA_HOME=/usr/local/share/jdk1.5.0
PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin:/usr/local/share/jdk1.5.0/jre/bin:/usr/local/share/jdk1.5.0/bin
CLASSPATH=$JAVA_HOME/jre/lib:/home/cassio/ #home/cassio é onde coloquei o driver
CLASSPATH=.:$CLASSPATH
export PATH JAVA_HOME CLASSPATH

E já tentei rodar de tudo que é jeito

~> java -cp /home/cassio/ testeDB
~> java -cp . $CLASSPATH testeDB

Me dá o erro

Exception in thread "main" java.lang.NoClassDefFoundError: /:/usr/local/share/jdk1/5/0/jre/lib
~> java java -cp $CLASSPATH testeDB
~> java java -cp $CLASSPATH testeDB
~> java -cp . $CLASSPATH /home/cassio/ testeDB

Ele até roda, mas dá a exceção abaixo:

java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
        at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:268)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:164)
        at testeDB.main(testeDB.java:12)

Não sei é problema na maneira com que escrevi o CLASSPATH dentro do .profile, ou se é a maneira como estou chamando a JVM na linha de comando…

O que estou fazendo de errado?!

Muito obrigado!

cassio

Pessoal, já dei um jeito, agora está funcionando!

coloquei o arquivo .jar do driver em $JAVA_HOME/jre/lib/ext e funcionou na boa!

Obrigado!

L

Bá, desculpa se eu tiver falando merda, mas tu não tem que registrar wlw no SO?
Eu sei que tem dois jeitos, eu já usei ambos. Um é sabendo onde está fisicamente o banco, o outro é registrando ele no sistema. Não sei daqui de cor, mas assim que chegar em casa te responde, pode ser?

vlw :wink:

Criado 28 de junho de 2006
Ultima resposta 28 de jun. de 2006
Respostas 4
Participantes 3