Conexão com Oracle 10g

13 respostas
S

Bom, estou desde ontem tentando inserir no banco e não consigo...
aí vai o código:

package bd;

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

import entidade.Contato;
 

public class SuporteJdbc {
	private Connection con;
	
	//construtor
	public SuporteJdbc() {
		String JDBC_DRIVER = "oracle.jdbc.driver.OracleDriver";  
		String DB_URL = "jdbc:oracle:thin:@localhost:1521:dese";  
		String DB_USER = "iplanner";  
		String DB_PASS = "iplanner"; 
		/*String host = "localhost";  
        String servicename = "iPlanner-dese";  
        String user = "iplanner";  
        String password = "iplanner";*/
		try {
			//carregando o drive jdbc
			DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
			//obter uma conexao
			Connection con = DriverManager.getConnection(DB_URL, DB_USER, DB_PASS);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	public void salvarContato(Contato c) throws Exception{
		String sql = "insert into contato (nome,fone) values (?,?)";
		try {
			PreparedStatement ps = 
				con.prepareStatement(sql);
			ps.setString(1, c.getNome());
			ps.setString(2, c.getFone());
			ps.execute();
		} catch (SQLException e) {
			e.printStackTrace();
			throw e;
		}
	}
}

aí eh o erro:

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:
localhost:1521:dese

	at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:125)
	at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:280)
	at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:319)
	at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:344)
	at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:148)
	at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32)
	at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:545)
	at java.sql.DriverManager.getConnection(Unknown Source)
	at java.sql.DriverManager.getConnection(Unknown Source)
	at bd.SuporteJdbc.<init>(SuporteJdbc.java:28)
	at servlets.Cadastro.doPost(Cadastro.java:43)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:228)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:216)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:634)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:445)
	at java.lang.Thread.run(Unknown Source)

na verdade eu não sei se são erros... por favor me ajudem...
=D

13 Respostas

rafaelglauber

Oi,

substitua: String DB_URL = "jdbc:oracle:thin:@localhost:1521:dese";

por: String DB_URL = "jdbc:oracle:thin:@localhost:1521/dese";

gilmaslima

O driver de conexão não está encontrando seu SID “dese”

Veja se o SID é esse mesmo!

geralmente em:

c:\oracle\network\admin\tsnames.ora

S

cara, a forma eh assim mesmo= host:porta:sid e naum
host:porta/sid

ele dá um erro de formato se eu colocar com a barra…

e eu já confirmei cara, o sid eh dese mesmooo !
e agora?

rafaelglauber

Oi,

Comigo funciona assim, se quiser tentar novamente faça:

ps. tinha esquecido das duas barras no inicio

S

Coloquei daquela forma e deu erro de novo…
aí coloquei da forma que ele deu no erro:

String DB_URL = "jdbc:oracle:thin:@//localhost:1521/dese";

e deu este outro erro aqui:

java.sql.SQLException: Listener refused the connection with the following error:
ORA-12514, TNS:listener does not currently know of service requested in connect descriptor
The Connection descriptor used by the client was:
//localhost:1521/dese

	at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:125)
	at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:280)
	at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:319)
	at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:344)
	at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:148)
	at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32)
	at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:545)
	at java.sql.DriverManager.getConnection(Unknown Source)
	at java.sql.DriverManager.getConnection(Unknown Source)
	at bd.SuporteJdbc.<init>(SuporteJdbc.java:28)
	at servlets.Cadastro.doPost(Cadastro.java:43)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:228)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:216)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:634)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:445)
	at java.lang.Thread.run(Unknown Source)
ramilani12

Amigo , no console digite tnsping nome do sid e veja se ele encontra este serviço…
Ps: vc precisa de algum client oracle instalado na maquina.

gilmaslima

Pelo erro que está dando “ORA-12514” talvez seu listener do oracle não esteja rodando.

Verifique se você tem o serviço OracleTNSListener rodando na sua máquina.

S

ok, digitei no console
tnspingdese e naum aparece nada…

e como eu faço para ver se o OracleTNSListener está rodando na minha máquina?

olha, o oracle eh o 10g e está instalado no servidor…
não está instalado na minha máquinha…
uso o eclipse europa e o Apache tomcat 6.0 como servidor…

agradeço… ;D

rafaelglauber

sydchenko:
ok, digitei no console
tnspingdese e naum aparece nada…

e como eu faço para ver se o OracleTNSListener está rodando na minha máquina?

olha, o oracle eh o 10g e está instalado no servidor…
não está instalado na minha máquinha…
uso o eclipse europa e o Apache tomcat 6.0 como servidor…

agradeço… ;D

Então não tente conectar em sua máquina…você colocou LOCALHOST no seu exemplo, mude LOCALHOST para o nome do SERVIDOR.

S

já fiz isto…
depois que eu faço isso e tento rodar a aplicação, ela roda…
passo os dados para inserir no banco e
depois clico em inserir…
mas só que ele não insere e não mostra, literalmente,
nenhum erro… nem no navegador do eclipse e nem no console…
eh como se não tivesse feito nada… tmb não altera nada no bando…
nem dá as mensagens de erro que eu coloquei caso desse erro ao tentar
inserir no banco…
=X

ramilani12

sydchenko:
ok, digitei no console
tnspingdese e naum aparece nada…

e como eu faço para ver se o OracleTNSListener está rodando na minha máquina?

olha, o oracle eh o 10g e está instalado no servidor…
não está instalado na minha máquinha…
uso o eclipse europa e o Apache tomcat 6.0 como servidor…

agradeço… ;D

É tnsping dese é com espaço em branco depois do tnsping

Sobre seu erro como vc esta inserindo? o banco esta com autocommit == true ou false?

S

olha, tow trabalhando com o banco a pouco tempo…
vou tentar fazer com o espaço em branco no meio…
mas o q eh autocommit?
onde vejo? no banco mesmo?

olha, vou explicar meu sistema…
na verdade eu só estou fazendo esta aplicação para
conseguir uma conexão com o BD Oracle…
conseguindo a conexão eu vou partir para fazer a
aplicação q tenho q desenvolver…
a aplicaçãozinha q tow fazendo eh simples…
tenho uma página jsp q eh de cadastro…
um cadastro simples… com nome e telefone…
pego no servlet os parametros passados pelos textfields
e crio um objeto do tipo CONTATO q tem nome e telefone…
aí faço a conexão para depois usar o método salvar do objeto contato
q salva no banco de dados…
lá no banco eh assim:
o nome do meu banco eh IPLANNER-DESE
a porta eh 1521…
o oracle está instalado no servidor, e naum na minha máquina…
o host do servidor eh: 192.168.1.123
o sid do banco eh: dese
no banco tenho a tabela contato,
dentro da tabela tenho lá 2 campos: nome e fone,
ambos do tipo String.
pronto… esta eh a aplicação teste…
na verdade mecho com o banco PostgreSql, e naum com Oracle…
mas onde tow desenvolvendo uso Oracle,
por isso tenho q criar esta conexão…
agradeço a vcs aew pela ajuda…
mas por favor… se puderem me ajudar ainda… agradeçoo !
=D

rafaelglauber

Oi,

Sobre autocommit: http://java.sun.com/docs/books/tutorial/jdbc/basics/transactions.html

Se o autocommit tiver false o comportamento deveria ser você inserir e não ver nada em outra sessão caso não tenha explicitamente realizado um commit, quando fechar a conexão os dados seriam gravados (esse é o comportamento padrão para o oracle: commit quando fecha a sessão). Se não tem mais erro para obter uma conexão agora é verificar o insert se tá correto, olhe no console para verificar se realmente não tá ocorrendo algum erro.

Criado 7 de outubro de 2008
Ultima resposta 8 de out. de 2008
Respostas 13
Participantes 4