Conexao a BD Oracle

5 respostas
A

Olá pessoal, primeiramente gostaria de parabenizar a comunidade. Já fiz varias pesquisas para resolver algumas duvidas e todas elas consegui achar informações.

Este é meu primeiro post.

Estou a bastante tempo tentando fazer conexao a BD (ja tentei mySQL e agora Oracle) mas não tem jeito, não da certo. Estou tentando Oracle porque na faculdade eu usava e dava certo.

Utilizo o Eclipse Version: 3.4.1 Build id: M20080911-1700
Baixei o Oracle 10g Release 10.2.0.1.0 Express Edition do site da Oracle e o driver correto para ele.

No Oracle:
Criei o usuario "teste" no Oracle e uma tabela "usuario" esta via linha de comando no console do Oracle.

No Eclipse:
Importo nas propriedades do projeto (Java Build Path/Libraries/Add External JAR) o .jar do driver da Oracle.
Criei um projeto chamado Teste com a classe ExAcessoOracleApp gerando o metodo main.

Adicionei o seguinte código
import java.sql.*;

class ExAcessoOracleApp {	
	public static void main(String args[]) throws SQLException,
			ClassNotFoundException {		
		Class.forName("oracle.jdbc.driver.OracleDriver");		
			String user = "teste";
			String senha= "senha";
			Connection conn = DriverManager.getConnection(
					"jdbc:oracle:thin:@127.0.0.1:8080:TESTE", user,senha);
	}
}

Com relação ao códio, acredito que isto basta para criar uma conexão ao BD sem retornar erro algum, no caso o console do Eclipse não iria retornar erro algum executando o código acima, ao meu ver isso indica que a conexão foi executada.
Minha duvida é nesta linha: "jdbc:oracle:thin:@127.0.0.1:8080:TESTE", user,senha);
Após a porta 8080 não sei se é o parametro TESTE que devo informar... coloquei isto porque deduzi que minha base de dados seria o mesmo nome do usuario que criei. Para mim este pode ser o unico erro que cometi.

O Eclipse relata o seguinte erro:

Exception in thread "main" java.sql.SQLException: Exceção de E/S: Got minus one from a read call
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:146)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:255)
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:387)
at oracle.jdbc.driver.PhysicalConnection.(PhysicalConnection.java:414)
at oracle.jdbc.driver.T4CConnection.(T4CConnection.java:165)
at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:35)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:801)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at ExAcessoOracleApp.main(ExAcessoOracleApp.java:14)

Não consigo passar disso, ja busquei bastante info mas nada me ajuda.
Vi no README da Oracle que tem configuração de CLASSPATH para fazer para "instalar" o driver .jar. Mas nao sei como proceder isso.

Alguem pode me ajudar?

Agradeço
André Orsato

5 Respostas

G

A sua porta do Oracle é 8080? tem certeza?

Geralmente o oracle utiliza a porta 1521

A

Troca a porta 1521.

A

Percebi uma besteira que fiz.

Copiei o link que abre o gerenciado via web do Oracle que aponta pra http://127.0.0.1:8080
A porta esta errada, 8080 nao é mesmo

Coloquei a porta que você me disse…

Agora retorna outro erro:

Exception in thread “main” java.sql.SQLException: Listener refused the connection with the following error:
ORA-12505, TNS:listener does not currently know of SID given in connect descriptor
The Connection descriptor used by the client was:
127.0.0.1:1521:TESTE

at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:261)
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:387)
at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:414)
at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:165)
at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:35)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:801)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at ExAcessoOracleApp.main(ExAcessoOracleApp.java:14)

Antes durava um certo tempo para retornar o erro, agora ele acontece quase que simultaneo a execução do programa.

O que pode ser?

G

tenta assim:

public static Connection getConnection() throws SQLException {
		try {
			Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
			return DriverManager.getConnection(
					"jdbc:oracle:thin:@127.0.0.1:1521:TESTE", "teste",
					"senha");
		} catch (Exception e) {
			throw new SQLException(e.getMessage());
		}
	}
A

Problema resolvido!!!

O erro estava no nome da base de dados que eu nao tinha certeza se estava correta.

Estava
“jdbc:oracle:thin:@127.0.0.1:1521:TESTE”, “teste”, “senha”
O correto é
“jdbc:oracle:thin:@127.0.0.1:1521:XE”, “teste”, “senha”

Descobri isso acessando o diretorio da instalação do oracle, dentro existe uma pasta chamada XE aonde contem os .DBF do oracle.

Mas me pergunto, existe uma forma mais inteligente de descobrir o nome?

Valeu!

Criado 28 de novembro de 2008
Ultima resposta 28 de nov. de 2008
Respostas 5
Participantes 3