Dúvida em Banco de Dados com JDBC

13 respostas
R

Bem, estou começando o estudo de Banco de Dados, só q estou encontrando muitos problemas. Já li o material daqui sobre JDBC não consegui fazer os exemplos tb. Confesso que tenho q ler mais sobre o assunto, só que entrei num projeto na universidade e estou tendo q aprender BD na correria. Sei apenas o básico d SQL, nada d Oracle, básico d algebra relacional, por isso os problemas. Se alguem souber site com um tutorial massa eu aceito.

Mas o motivo desse topico nao eh esse... Aqui segue um algoritmo q eu fiz que pega a informação do driver JDBC. Só que está dando o seguinte erro:

[color=blue]SQLException:[/color] [color=red][Microsoft][ODBC Driver Manager] Nome da fonte de dados não encontrado e nenhum driver padrão especificado[/color]

Could not Get Connection

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

public class JDBCDriverInformation {
	static String userid="scott", password = "tiger";
	static String url = "jdbc:odbc:";	

	static Connection con = null;
	public static void main(String[] args) throws Exception {
	    Connection con = getOracleJDBCConnection();
	    if(con!= null){
	       System.out.println("Got Connection.");
	       DatabaseMetaData meta = con.getMetaData();
	       System.out.println("Driver Name : "+meta.getDriverName());
	       System.out.println("Driver Version : "+meta.getDriverVersion());

	    }else{
		    System.out.println("Could not Get Connection");
	    }
	}

	public static Connection getOracleJDBCConnection(){

		try {
			Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");	

		} catch(java.lang.ClassNotFoundException e) {
			System.err.print("ClassNotFoundException: ");
			System.err.println(e.getMessage());
		}

		try {
		   con = DriverManager.getConnection(url, userid, password);
		} catch(SQLException ex) {
			System.err.println("SQLException: " + ex.getMessage());
		}
		
		return con;
	}


}

O que será que está havendo?

13 Respostas

G

amigo vc criou a fonte de dados no seu sistema?

crpablo

O que vc está usando por aih?

:arrow: BD
:arrow: IDE

Essas coisas…

[]'s

R

Como faço pra criar?

R

To usando o Eclipse, o banco d dados eh o MySQL

crpablo

Certo...

Então vamos lá...

:arrow: Vc tem que baixar o driver JDBC do MySQL: mysql-connector-java-3.1.14-bin

:arrow: Adicionar o mesmo ao classpath do Eclipse

Depois disso é só criar a conexão...

Segue um exemplo que funciona.

// Cria e retorna uma nova conexão com o BD
	private Connection getConnection() {

		Connection conn = null;

		try {
			Class.forName("com.mysql.jdbc.Driver").newInstance();
			String url = "jdbc:mysql://localhost/NOMEDOBD";
			String user = "root";
			String pass = "root";
			conn = DriverManager
					.getConnection(url, user, pass);
		} catch (InstantiationException e) {
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		}

		return conn;
	}
}

Faz isso e testa...

qlq coisa dá um tok...

[]'s

R

Putzz cara... malzão eu to usando Oracle. Mas essa aih do MySQL vai ser util... =D
Tava travado num q eu tava usando MySQL. Vo tentar fazer isso la

Mas, sobre o erro... eu acho q eh na linha q eu declaro o url neh n? Pq eu fiz outra classe q testava o driver oracle e rodou direitinho... da uma olhada

import javax.swing.JOptionPane;

public class TestJDBCDriverInstallation_Oracle {

	public static void main(String[] args) {
		StringBuffer output  = new StringBuffer();
		output.append("Testando a instalação do driver oracle \n");
		try {
			String className = "sun.jdbc.odbc.JdbcOdbcDriver";
			Class driverObject = Class.forName(className);
			output.append("Driver : "+driverObject+"\n");
			output.append("Instalação do Driver feita com sucesso");
			JOptionPane.showMessageDialog(null, output);
		} catch (Exception e) {
			output  = new StringBuffer();
			output.append("Instalação do Driver FALHOU\n");
			JOptionPane.showMessageDialog(null, output);
			System.out.println("Falhou: Erro do Driver: " + e.getMessage());
		}
	}
}

So que nessa eu nao testava conexao com o BD, so testava o driver. O problema dessa minha ta no acesso ao BD eu acho.

crpablo

Tranquilo…

Mas acho q vc deveria utilizar o driver específico do BD…

Se vc tiver utilizando o Oracle 11g, o driver é: ojdbc6

:arrow: Nome do driver: oracle.jdbc.driver.OracleDriver

:arrow: URL: jdbc:oracle:thin:@localhost:1521:NOMEDOBD

O Oracle só tenho conectado pelo hibernate, não tenho nenhuma conexão jdbc pra exemplo, mas vai achar várias com certeza.

[]'s

R

eu nuum sei criar um BD :cry: :cry: :cry:

como eh q faz hein? No exemplo ai eu to usando driver bridge odbc… agora nuum sei mais nem se eh oracle nem se eh MySQL. Eu tenho qse certeza q o problema eh na variável url, pq nao existe o BD.

Alguem pode me ajudar?

crpablo

Vc tah com o SGBD(Oracle ou Mysql) instalado, correto?

No MySQL vc pode criar via console mesmo...

É só usar a senha root para entrar no console e utilizar os comandos básicos de sql pra criar o bd, ou seja:
Create database BLABLABLA;
Drop database BLABLABLA;

Select, etc

Se tiver usando o Oracle, tem uma tool pra criação do BD, é bem tranquilo, é só ir lendo e seguindo os passos.

Quanto ao driver, vc tá usando ODBC, isso vai deixar vc preso a plataforma, o q inutiliza uma grande vantagem do java q é a independencia de plataforma...

Baixa os drivers q falei cria o bd e testa como falei acima.

Pra ajudar, e não se perder. Aconselho a começar pelo "começo".

Baixa o Mysql. [url]http://mysql.mirrors.hoobly.com/Downloads/MySQL-5.0/mysql-5.0.51a-win32.zip[/url]
Baixa o Driver JDBC do mysql. [url]http://dev.mysql.com/downloads/connector/j/3.1.html[/url]

Faz isso dpois vai em frente....

R

Consegui conectar e fazer uma tabela… agora minha duvida eh simples. Como eu faço pra obter o nome das colunas da minha tabela?

crpablo

Dá uma olhada em MetaData…

[]'s

R

Ok, consegui ja! Vlw

R

Galera, tem alguma maneira de impeidr que numa tabela se insira tuplas idênticas?

Criado 9 de abril de 2008
Ultima resposta 18 de abr. de 2008
Respostas 13
Participantes 3