conexão com oracle

pessoal…num sei que arquivo devo colocar no meu path para conectar ao banco oracle???

esto usando esses dois:
ojdbc14.jar e nls_charset12.jar
é isso?

meu código tá assim:

package dboracle;

import java.sql.*; 

class JdbcTest { 
  public static void main (String args []) throws SQLException { 
 // Load Oracle driver
 DriverManager.registerDriver(new oracle.jdbc.OracleDriver());
     
 // Connect to the local database
 Connection conn = 
 DriverManager.getConnection ("jdbc:oracle:oci8:banco", "usuario", "senha");

 // Query the employee names 
 Statement stmt = conn.createStatement (); 
 ResultSet rset = stmt.executeQuery ("select * from tabela");

 // Print the name out 
 while (rset.next ())
      System.out.println (rset.getString (1));
  } 
} 

tente usar isso no lugar.

Class.forName("oracle.jdbc.OracleDriver");

Que Oracle vc está usando? Que driver vc quer utilizar para fazer a conexão?

O driver que vc está tentando utilizar é o Oracle Thin, e a connection string é a para conexão com o driver OCI.

Essa é a connection string q eu uso em casa para conectar ao oracle 10g XE, com o driver Oracle Thin:

jdbc:oracle:thin:@localhost:1521:xe

É isso ae :smiley:

[editado]desabilitando smiles… a connection string ficou cheia de carinhas[/editado]

[quote=neófito]Que Oracle vc está usando? Que driver vc quer utilizar para fazer a conexão?

O driver que vc está tentando utilizar é o Oracle Thin, e a connection string é a para conexão com o driver OCI.

Essa é a connection string q eu uso em casa para conectar ao oracle 10g XE, com o driver Oracle Thin:

jdbc:oracle:thin:@localhost:1521:xe

É isso ae [/quote]

mas se eu for fazer a conexão para o drive OCI, que arquivo devo usar???

O banco é o Oracle 920

Tô recebendo essa exception:

Exception in thread "main" java.lang.UnsatisfiedLinkError: free_c_state
	at oracle.jdbc.oci8.OCIDBAccess.free_c_state(Native Method)
	at oracle.jdbc.oci8.OCIDBAccess.logoff(OCIDBAccess.java:619)
	at oracle.jdbc.driver.OracleConnection.<init>(OracleConnection.java:431)
	at oracle.jdbc.driver.OracleDriver.getConnectionInstance(OracleDriver.java:536)
	at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:328)
	at java.sql.DriverManager.getConnection(Unknown Source)
	at java.sql.DriverManager.getConnection(Unknown Source)
	at dboracle.JdbcTest.main(JdbcTest.java:12)

Então, o arquivo q vc parece ter ( ojdbc14.jar) é o que contém o driver Oracle Thin, então sugiro q vc tente fazer a conexão com ele mesmo.

De qualquer forma, se vc tem um oracle 9i, para usar o driver OCI a connection string deveria ser algo como

"jdbc:oracle:oci:banco"

e não

"jdbc:oracle:oci8:banco"

(o driver oci8 é para oracle 8)

Tente usar

jdbc:oracle:thin:host:sid

onde “sid” é o System Identifier do database. O sid pode ser encontrado em um arquivo chamado “tnsnames.ora”, que fica em uma das pastas de instalçao do oracle.

Então…agora entendi o que vc disse, mas meu problema é na hora de carregar o drive, entretanto, acho que eu ia ter esse problema mais tarde eheheh…

Ah, eu estive dando uma olhada nas documentações q eu tenho aqui e fiquei mais confuso ainda… olha só, para vc conectar usando o driver Oracle Thin, é daquele jeito lá que eu mostrei, mas para conectar com o driver OCI não posso te dizer pq nunca usei…

Então, olha isso aqui

http://w2.syronex.com/jmr/edu/db/oracle-and-java

Parece que para usar o driver OCI vc tem que ter alguma coisa da oracle instalada na sua máquina, já que esse driver não é 100% java (ele usa código nativo para se comunicar com o oracle - JNI).

Mais uma referência (essa é das boas):

http://download-west.oracle.com/docs/cd/B10501_01/java.920/a96654/toc.htm

É isso ae :wink:

Então consegui com o thin mesmo, mas o lance era um arquivo que eu tinha que por no classpath peguei ele aqui:

http://www.oracle.com/technology/software/tech/java/sqlj_jdbc/htdocs/jdbc9201.html

o arquivo é o ocrs12.zip, mas pra por ele no classpath remonei ele para ocrs12.jar e funcionou…

então para registro e futuras dúvidas, meu classpath tem:
ojdbc14.jar e ocrs14.jar

minha classe

[code]

package dboracle;

import java.sql.*;

class JdbcTest {
public static void main(String args[]) throws SQLException {

	// Load Oracle driver
	DriverManager.registerDriver(new oracle.jdbc.OracleDriver());
	
	// Connect to the local database
	Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@o endereço Ip do banco:1521:nome do banco",
			"usuário", "senha");

	// Query the employee names
	Statement stmt = conn.createStatement();
	ResultSet rset = stmt.executeQuery("select * from tabela");

	// Print the name out
	while (rset.next())
		System.out.println(rset.getString(1));
}

}[/code]

[quote]De qualquer forma, se vc tem um oracle 9i, para usar o driver OCI a connection string deveria ser algo como
Code:

“jdbc:oracle:oci:banco”

e não
Code:

“jdbc:oracle:oci8:banco”

(o driver oci8 é para oracle 8)

Tente usar
Code:

jdbc:oracle:thin:host:sid[/quote]

E no 10g xe, como devo utilizar ???

jdbc:oracle:thin:host:sid

ou

jdbc:oracle:oci:banco

???

vlw !

[quote=PadrE]E no 10g xe, como devo utilizar ???

jdbc:oracle:thin:host:sid

ou

jdbc:oracle:oci:banco

???

vlw ![/quote]

Não é a versão do Oracle Server (8i, 9i 10g, 10g XE, Personal, etc) que vai determinar qual tipo de driver utilizar. Todas as versões suportam tanto conexão com client thin como OCI. Se onde você for rodar o seu programa não tiver um “Oracle client” (instalação de umas libs em codigo nativo de cada plataforma), use sempre o thin. Só use drive OCI em sistemas que necessitem de performance ou que rodem no Oracle IAS, pois só com este drive é possível usar de maneira correta um Oracle RAC.

Resumindo: use sempre o client thin. Só use OCI se for Oracle IAS ou o projeto exigir.

oyama,

vlw os exclarecimentos… vou colocar tudo com thin no projeto e ver se ocorre algum problema…

Se vc souber algum material q fale sobre essas diferenças de conexão eu agradeceria… justamente para ver se o projeto vai mesmo precisar usar OCI ou mesmo para que eu veja qual a melhor conexão no meu caso…

Qlqr problema volto a postar e tb coloco as conslusões sobre o problema…

vlw !

Bom… não sei como fazer a conexão via OCI com o oracle 10g xe local…
=[ Se alguem souber de sobre algum tutorial, agradeço…

Para solucionar meu problema, acabei alterando a conexão OCI para Thin… o que deu certo…

Abaixo alguns link’s sobre o assunto… e tb sobre qual a melhor forma de Conexão… OCI vs Thin

http://www.theserverside.com/discussions/thread.tss?thread_id=4891#15342
http://forum.java.sun.com/thread.jspa?forumID=48&threadID=583618
http://download-east.oracle.com/docs/cd/B12037_01/appdev.101/b10779/oci01int.htm

Fui !

[quote=PadrE]
Se vc souber algum material q fale sobre essas diferenças de conexão eu agradeceria… justamente para ver se o projeto vai mesmo precisar usar OCI ou mesmo para que eu veja qual a melhor conexão no meu caso…
vlw ![/quote]

Documentos do site de tecnologia da Oracle:
http://www.oracle.com/technology/docs/tech/java/sqlj_jdbc/index.html

Não sei se tem claramente quais são as vantagens e desvantagens de se usar um método ou outro, mas teoricamante via OCI deveria ser mais rápido. A única vez que tivemos real necessidade de usar o drive OCI foi para conectar em um Oracle RAC no Oracle IAS 10g (parace que o balanceamneto de carga no IAS só funciona se for OCI).

Nossa… agora surgiu uma duvida que estou ate com medo !

o ORACLE RAC seria um banco em Cluster… ate ai tudo bem, pq uso o Espress e ele não da suporte a Cluster…

Agora,… um ORACLE IAS seria um banco ORACLE acessado via web… e o uso da OCI seria para controlar isso ??

Minha aplicação será acessada por um client, ou seja… tenho uma parte server, e a parte client… aoh falta eu ter q utilizar OCI e o Expressa não da suporte a isso… ai dancei … hehe

Bom… vou continuar tentando realizar a conexão OCI no 10g Express local… mas vou torcer para não precisar… ^^

[quote=PadrE]Nossa… agora surgiu uma duvida que estou ate com medo !

o ORACLE RAC seria um banco em Cluster… ate ai tudo bem, pq uso o Espress e ele não da suporte a Cluster…[/quote]
Certo.

Não. Oracle IAS é o Application Server da Oracle (equivalente ao JBoss, WebSphere da IBM, Weblogic da BEA, Glassfish, etc). Pode-se tanto usar OCI como thin para conectar do IAS a um banco Oracle. O recomendado é usar OCI.

[quote=PadrE]Minha aplicação será acessada por um client, ou seja… tenho uma parte server, e a parte client… aoh falta eu ter q utilizar OCI e o Expressa não da suporte a isso… ai dancei … hehe

Bom… vou continuar tentando realizar a conexão OCI no 10g Express local… mas vou torcer para não precisar… ^^[/quote]
De novo, esqueça conexão OCI. Use thin. Se você usa Oracle 10g Express dificilmente vai ter que usar OCI.

oyama,

Cara, valeu mesmo por tirar minha dúvidas… eu acabei convertendo tudo para thin mesmo… e até agora não tivemos problemas… hehe

Vlw !

“O Conhecimento o Libertará !”

Pessoal to tentando fazer o seguinte: logar com o usuario system, pra depois criar novos usuários…

Foi uma “missão” que o professor de BD deixou pra gente.

Usei o codigo abaixo, pra testar se conseguia entrar como “system”, só que aparece a seguinte mensagem:

java.sql.SQLException: Exceção de E/S: Invalid number format for port number
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(DriverManager.java:512)
at java.sql.DriverManager.getConnection(DriverManager.java:171)
at dboracle.JdbcTest.main(testando.java:12)
Exception in thread “main”

Codigo q usei:

package dboracle;

import java.sql.*;

class JdbcTest {
public static void main(String args[]) throws SQLException {

    // Load Oracle driver   
    DriverManager.registerDriver(new oracle.jdbc.OracleDriver());   
       
    // Connect to the local database   
    Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:8080/apex/:ex",   
            "system", "12345");   

    // Query the employee names   
    Statement stmt = conn.createStatement();   
    ResultSet rset = stmt.executeQuery("select * from clientes");   

    // Print the name out   
    while (rset.next())   
        System.out.println(rset.getString(1));   
}   

}