Ajuda com conexão Java e Oracle 10g

10 respostas
G

Pessoal, estou usando o Oracle 10g express edition e o IDE é o netbeans.

baixei no site da Oracle o que acho ser o driver necessario, seria o arquivo classes12.jar, so que nao sei fazer a conexao com o oracle, que string eu uso… vi topicos falando do driver thin. Só que nao vi nenhum driver com esse nome nos downloads.

Alguem teria um exemplo de uma conexao assim por ai?

public static void main(String[] args) {
    
           Connection connection = null;  
            try {  
                // Load the JDBC driver  
                String driverName = "oracle.jdbc.driver.OracleDriver";  
                Class.forName(driverName);  

                // Create a connection to the database  
                String serverName = "127.0.0.1";  
                String portNumber = "1521";  
                String sid = "orcl";  
                String url = "jdbc: oracle:thin:@" + serverName + ":" + portNumber + ":" + sid;  
                String username = "MyUsername";  
                String password = "pass";  
                connection = DriverManager.getConnection(url, username, password);  
            } catch (ClassNotFoundException e) {  
                System.out.println("ClassNotFoundException" + e.getMessage());
            } catch (SQLException e) {  
                System.out.println("SQLException" + e.getMessage());
            } catch (Exception e) {
                System.out.println("Exception = " + e.getMessage());
            }
    
    }

10 Respostas

G

so lembrando que o netbeans mostra o segunte erro:

SQLExceptionNo suitable driver found for jdbc: oracle:thin:@127.0.0.1:1521:orcl

BrunoFurtado

Opa,

O driver para conexão com o banco de dados Oracle 10g Express é o ojdbc14.jar.
Link: http://www.oracle.com/technetwork/database/enterprise-edition/jdbc-10201-088211.html

Segue exemplo de conexão:

package br.com.up.citybus.core.persistencia.oracle;

public class OracleDaoFactory extends DaoFactory {

	private static final String JDBC_DRIVER = "oracle.jdbc.OracleDriver";
	private static final String URL_CONNECTION = "jdbc:oracle:thin:@192.168.1.133:1521:XE";
	private static final String DB_USER = "usuario";
	private static final String DB_PASS = "senha";
	
	public static Connection createConnection() throws ClassNotFoundException, SQLException {
		Class.forName(JDBC_DRIVER);
		return DriverManager.getConnection(URL_CONNECTION, DB_USER, DB_PASS);
	}
	
}
aix

gpmdf2:
so lembrando que o netbeans mostra o segunte erro:

SQLExceptionNo suitable driver found for jdbc: oracle:thin:@127.0.0.1:1521:orcl

na oraclce diz que:

classes12.jar (1,621,582 bytes) - for use with JDK 1.2 and JDK 1.3

no meu ver seria este:

ojdbc14.jar (1,569,316 bytes) - classes for use with JDK 1.4 and 1.5

final private String driver = "oracle.jdbc.driver.OracleDriver"; //driver para carregar o Oracle
final private String url = "jdbc:oracle:thin:@127.0.0.1:1521:XE";
G

Pessoal,

Funcionou! Era isso mesmo! Eu estava confundindo os drivers.

Só mais uma coisa: Esse “XE” no final da string de conexao, o que significa? Pelo que li, me parece ser o “sid”. Ele é sempre esse? o que é o “sid”?

Obrigado pela ajuda!

BrunoFurtado

Opa,

Eh o nome da base de dados Express.
O Express nao permite a criacao de base de dados, portanto este eh sempre o nome a ser utilizado.

Caso vc venha a utilizar o Oracle 10g versao completa, vc tera q criar uma base de dados com qlqr nome e utiliza-la na String de conexao.

G

Uma dúvida só que agora no oracle mesmo.

Consegui fazer a conexão, rodei alguns sql. Agora to no Oracle, quero fazer uma procedure. O que estou fazendo é o segunite:

Criei essa tabela simples: [/code] CODIGO Number NOME Varchar2 COD_REGIAO Number
então, no oracle express edition, vou em Início>SQL>Comandos SQL e digito:
CREATE OR REPLACE PROCEDURE MYPROC IS BEGIN UPDATE departamento SET cod_regiao = 1000 WHERE cod_regiao = 15; END; / [code]

depois, no mesmo lugar, tento: execute MYPROC();

o que é mostrado: ORA-00900: instrução SQL inválida

O que pode ser?

BrunoFurtado

Opa,

Tente:

BEGIN
   execute MYPROC();
END;
G

já tinha pensando nisso antes…

quando faço:

begin
   execute MYPROC();
end;

resultado:

ORA-06550: linha 2, coluna 9:
PLS-00103: Encontrado o símbolo "MYPROC" quando um dos seguintes símbolos era esperado:

   := . ( @ % ; immediate
O símbolo ":=" foi substituído por "MYPROC" para continuar.

OBS: Quando vou em Início>Browser de Objetos
então clico na procedure MYPROC, aparece: create or replace PROCEDURE MYPROC IS BEGIN UPDATE departamento SET cod_regiao = 1000 WHERE cod_regiao = 15; END;

num quadrado vermelho. Essa cor significa que pode haver algum erro de sintaxe nos comandos? Ou é normalmente em vermelho, mesmo? De qualquer forma, não consigo ver onde está o erro. O dado não é atualizado.

G

Oi,

Tentei assim:

BEGIN
           myproc;
       END;
       /

e funcionou :

Instrução processada.

0,01 segundos

1	dep1	1
2	dep2	2
3	dep3	3
15	15	1000

Alguma razão para não precisar do “execute”? E todos os fóruns que visitei, as pessoas usam execute ou exec, que é a versão “menor” do comando, nao e?

BrunoFurtado

Eh brother,
Ai eu desconheço. Peço ajuda dos DBAs ai…

Criado 18 de janeiro de 2012
Ultima resposta 19 de jan. de 2012
Respostas 10
Participantes 3