Problemas com Java - Oracle XE

Oi pessoal! Eu estava estudando Banco de Dados no meu curso Java e estou travado porque meu código não compila. Eu segui exatamente os mesmos passos do instrutor mas não funciona:

[code] package myjava.exemplos;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class AulaXTI110_BancoDeDados {

public static void main(String[] args) throws SQLException {
	
	String url = "jdbc:oracle:thin:@127.0.0.1:3301:xe";
	String sql = "SELECT CODIGO, NOME, SEXO, EMAIL FROM PESSOA";
	
	try(Connection con = DriverManager.getConnection(url, "nando", "abc123");
	PreparedStatement stm = con.prepareStatement(sql);
	ResultSet rs = stm.executeQuery()){
		while(rs.next()) {
			System.out.println(rs.getString("NOME"));
		}
	}
	

}

}
[/code]

Eu criei a tabela, como pode ser visto nesse printscreen:

Os erros informados são esses (uso o Eclipse):

java.sql.SQLException: Erro de ES: The Network Adapter could not establish the connection at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:419) at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:536) at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:228) at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32) at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:521) at java.sql.DriverManager.getConnection(Unknown Source) at java.sql.DriverManager.getConnection(Unknown Source) at myjava.exemplos.AulaXTI110_BancoDeDados.ObterConexao(AulaXTI110_BancoDeDados.java:33) at myjava.exemplos.AulaXTI110_BancoDeDados.main(AulaXTI110_BancoDeDados.java:9) Caused by: oracle.net.ns.NetException: The Network Adapter could not establish the connection at oracle.net.nt.ConnStrategy.execute(ConnStrategy.java:375) at oracle.net.resolver.AddrResolution.resolveAndExecute(AddrResolution.java:422) at oracle.net.ns.NSProtocol.establishConnection(NSProtocol.java:678) at oracle.net.ns.NSProtocol.connect(NSProtocol.java:238) at oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:1054) at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:308) ... 8 more Caused by: java.net.ConnectException: Connection refused: connect at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method) at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source) at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source) at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source) at java.net.AbstractPlainSocketImpl.connect(Unknown Source) at java.net.PlainSocketImpl.connect(Unknown Source) at java.net.SocksSocketImpl.connect(Unknown Source) at java.net.Socket.connect(Unknown Source) at oracle.net.nt.TcpNTAdapter.connect(TcpNTAdapter.java:201) at oracle.net.nt.ConnOption.connect(ConnOption.java:123) at oracle.net.nt.ConnStrategy.execute(ConnStrategy.java:353) ... 13 more Exception in thread "main" java.lang.NullPointerException at myjava.exemplos.AulaXTI110_BancoDeDados.main(AulaXTI110_BancoDeDados.java:11)

Alguém me ajuda? Vou ser grato pelo resto da eternidade!

PS: moderador, por favor não coloque um “?” no final do meu título porque “Problemas com Java - Oracle XE” é uma afirmação e não uma interrogação.

Esta mensagem é apresentada quando existe erro na comunicação com o banco. O banco pode estar parado, a porta está errada, a url pode estar errada, etc.
Percebe que a tua String sql tem como porta o valor 3301, certo? Você alterou da padrão para 3301? Senão, a porta correta seria 1521

String url = "jdbc:oracle:thin:@127.0.0.1:3301:xe";

Deveria ser

String url = "jdbc:oracle:thin:@127.0.0.1:1521:xe";

Alterei e continuou dando erros:

Exception in thread "main" java.sql.SQLException: Erro de ES: The Network Adapter could not establish the connection at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:419) at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:536) at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:228) at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32) at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:521) at java.sql.DriverManager.getConnection(Unknown Source) at java.sql.DriverManager.getConnection(Unknown Source) at myjava.exemplos.AulaXTI110_BancoDeDados.main(AulaXTI110_BancoDeDados.java:15) Caused by: oracle.net.ns.NetException: The Network Adapter could not establish the connection at oracle.net.nt.ConnStrategy.execute(ConnStrategy.java:375) at oracle.net.resolver.AddrResolution.resolveAndExecute(AddrResolution.java:422) at oracle.net.ns.NSProtocol.establishConnection(NSProtocol.java:678) at oracle.net.ns.NSProtocol.connect(NSProtocol.java:238) at oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:1054) at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:308) ... 7 more Caused by: java.net.ConnectException: Connection refused: connect at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method) at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source) at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source) at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source) at java.net.AbstractPlainSocketImpl.connect(Unknown Source) at java.net.PlainSocketImpl.connect(Unknown Source) at java.net.SocksSocketImpl.connect(Unknown Source) at java.net.Socket.connect(Unknown Source) at oracle.net.nt.TcpNTAdapter.connect(TcpNTAdapter.java:201) at oracle.net.nt.ConnOption.connect(ConnOption.java:123) at oracle.net.nt.ConnStrategy.execute(ConnStrategy.java:353) ... 12 more

:confounded:

Bom, agora a outra opção é certificar-se de que o banco está rodando e analisar os arquivos tnsnames.ora e listener.ora e verificar se eles estão mapeando a url 127.0.0.1 ou localhost.
Se não quiser ir até os arquivos, altera de 127.0.0.1 para localhost e testa,

Eu mudei para localhost também e nada :frowning:

Tem mesmo certeza de que o banco roda?
Tem mesmo certeza que a configuração está correta?
Consegue conectar-se ao banco utilizando o SQL Developer?

Na verdade eu não tenho certeza de nada, porque é a primeira aula de banco de dados e jdbc que eu estava vendo, eu só segui os passos, e no caso do professor deu certo e no meu deu tudo errado. ;-;

Bom, então o que te resta fazer é conversar com teu professor e pedir que ele verifique onde você errou e depois te ajude a corrigir.
Assim não temos nem como saber se você instalou o banco e se configurou o mesmo de forma adequada.

1 curtida

Então não há problemas no código que fiz no Eclipse? Sendo assim eu darei uma introdução rápida em SQL para aprender sobre como instalar e configurar corretamente o banco, acho que será mais apropriado.

Tirando o que descrevi anteriormente, a respeito da porta, não há qualquer outro problema aparente.

1 curtida

Certo, obrigado por tudo. Que Bill Gates e Zuckerberg te abençoem em nome de Alan Turing.

Isso é bênção ou maldição?
Prefiro a bênção da Ada Lovelace…

Encontrei a solução! O problema não estava na instalação do banco nem nas configurações, mas em sei lá. Enfim, para quem tiver a mesma dúvida (e pelo que pesquisei na net, é um montão de gente xD):

  1. Eu abri um arquivo de bloco de notas em modo administrador;
  2. Procurei pelo arquivo hosts em System32/drivers/etc/
  3. Na linha em que aparece o localhost eu retirei o “#”.

Luis, então eu desejo que as bênçãos que lhe desejei em nome desses homens sejam o dinheiro deles :v

Nem em um bilhão de dólares do Bill Gates que eu ia sonhar com isso…
Enfim, boa!