Jdbc para oracle 10g xe

14 respostas
Valdecyr

Boa Tarde Pessoal,

estou com o oracle expression edition, instalado, tentei configurar o driver jdbc, mas está dando erro.
no meu programa de teste em java fiz a conexão tipo:

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

Connection con;

String query = INSERT INTO FUNCIONARIO ( +

" CODIGO_FUNCIONARIO, CPF," +

" NOME_FUNCIONARIO, SALARIO, DEPARTAMENTO" +

) VALUES (’” +

t1.getText().trim() + " ', '" +

t2.getText().trim() + " ', '" + t3.getText().trim() + " ', '" +

t4.getText().trim() + " ', '" + t2.getText().trim() + " ', ')";



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



con = DriverManager.getConnection(url, usuario, minhasenha);

até aí acho que está tudo bem, pois não contém nenhum erro de código no netbeans

baixei o driver na página do oracle, mas depois verifiquei que na pasta do Oracle, já veio o driver prá
descompactar em:
C:\Databases\Oracle\app\oracle\product\10.2.0\server\jdbc\lib

depois de descompactar o OracleDriver.class ficou em:
C:\Databases\Oracle\app\oracle\product\10.2.0\server\jdbc\lib\oracle\jdbc\driver

criei uma CLASSPATH com esse caminho acima.

na hora que vou Cadastrar um novo registro, conforme o Insert acima, estou recebendo no netbeans essa mensagem de erro:

ClassNotFoundException:oracle.jdbc.driver.OracleDriver
SQLException: No suitable driver

Alguém pode me dar uma luz, aonde estou errando?

Muito Obrigado, abraço,
Valdecyr

14 Respostas

Valdecyr

ah, o nome do driver .jar é:

ojdbc14.jar, parece que é o último pro XE, diz no site que é prá JDK1.4 e 1.5 eu uso o JDK1.5

Valdecyr

rafaelglauber

Só falta colocar esse arquivo: ojdbc14.jar, no ClassPath da sua aplicação.

Valdecyr

Desculpa Rafael,

mas eu não entendi o que vc quis dizer,

qual classpath vc está falando, não é o que eu fiz no sistema ?

como faço isso?

abraço, Valdecyr

rafaelglauber

tudo mastigado aqui: http://www.guj.com.br/java.tutorial.artigo.108.1.guj

verá que ele fala até mesmo do erro que tá dando em sua aplicação.

:smiley:

Valdecyr

Hum…, Li, e parece que entendi,

eu na verdade ainda não gravei o meu aplicativo, só estou testando ele ainda, o que não está dando certo
é a conexao via drive do oracle, pelo que entendi lá nesse artigo fala do .jar de uma aplicação, ou então
eu não entendi direito mesmo,

desculpa a ignorância, mas sou novo em java e agora que comecei a trabalhar com JDBC.

eu até fiz uma classpath apontando prá ojdbc14.jar, mas continua dando o mesmo erro,

obrigado novamente,

Valdecyr

rafaelglauber

copie ojdbc14.jar para a pasta lib de seu projeto, isso irá funcionar.

Valdecyr

Olá a todos … bom dia

meu deus já estou ficando nervoso, já tentei de tudo e não consigo
já copiei a ojdbc14.jar, e nada

através do netbeans entrei na opção de banco de dados, criei por lá a conexao por driver jdbc, e consigo conectar o banco de dados nele, colocando os meus dados no bd e conecta do lado esquerdo do netbenas aparece as tabelas e tudo, mas não consigo rodar o programa de jeito nenhum, dá sempre a mesma mensagem:
ClassNotFoundException:oracle.jdbc.driver.OracleDriver
SQLException: No suitable driver

poxa vida, coloquei no Classpath o caminho:
C:\Databases\Oracle\app\oracle\product\10.2.0\server\jdbc\lib\oracle\jdbc\driver
e nada.

será que a classpath e dentro do Oracle ou tenho que mudar prá dentro do jre do Java?
será que preciso passar o código completo dessa pequena aplicação para vcs vcs verem?

agradeço a ajuda de vcs até agora,
Abraço,
Valdecyr

Valdecyr

ok midianet use netbeans,

fiz tudo isso,
em adicionar biblioteca, escolhi a opção: Extensões de Layout do Swing, coloquei o jar lá da past lib que
havia criado no projeto, limpei e construi e agora tá dando o erro:

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:
127.0.0.1:1521

estou quase desistindo disso, não sei se o erro está na classpath da minha maquina. sei lá

mas de qq forma vou postar todo o código:

package cadastrafuncionario;

import java.awt.<em>;

import java.awt.event.</em>;

import java.sql.<em>;

import javax.swing.</em>;
public class CadastraFuncionario extends JFrame {

private JLabel l1, l2, l3, l4, l5;

private JTextField t1, t2, t3, t4, t5;

private JButton b1, b2;
public CadastraFuncionario() {
    l1 = new JLabel("Código: ");
    l2 = new JLabel("CPF: ");
    l3 = new JLabel("Nome: ");
    l4 = new JLabel("Sálario: ");
    l5 = new JLabel("Departamento: ");
    t1 = new JTextField(10);
    t2 = new JTextField(10);
    t3 = new JTextField(10);
    t4 = new JTextField(10);
    t5 = new JTextField(10);
    b1 = new JButton("Gravar no Oracle");
    b2 = new JButton("Fechar");
    b1.addActionListener(new Ouvinte());
    b2.addActionListener(new Ouvinte());
    
    t4.addActionListener(new Ouvinte());
    Container c = getContentPane();
    c.setLayout(new GridLayout(6,2));
    c.add(l1); c.add(t1);
    c.add(l2); c.add(t2);
    c.add(l3); c.add(t3);
    c.add(l4); c.add(t4);
    c.add(l5); c.add(t5);
    c.add(b1); c.add(b2);
    
    setSize(500,300);
    setTitle("Cadastro de Funcionário");
    setLocationRelativeTo(null);
    setVisible(true);
    
}

public static void main(String[] args) {
    CadastraFuncionario janela = new CadastraFuncionario();
    janela.addWindowListener(new WindowAdapter() {
        public void windowClosing(WindowEvent e) {
            System.exit(0);
        }
    });
}

private class Ouvinte implements ActionListener {
    
    public void actionPerformed(ActionEvent e) {
        if (e.getSource()==b1) {
            String url = "jdbc:oracle:thin:@127.0.0.1:1521";
            Connection con;
            String query = "INSERT INTO FUNCIONARIO (" +
                    " CODIGO_FUNCIONARIO, CPF," +
                    " NOME_FUNCIONARIO, SALARIO, DEPARTAMENTO" +
                    ") VALUES ('" +
                    t1.getText().trim() + " ', '" +
                    t2.getText().trim() + " ', '" + t3.getText().trim() + " ', '" +
                    t4.getText().trim() + " ', '" + t2.getText().trim() + " ', ')";
            
            Statement stmt;
            
            try {
                Class.forName("oracle.jdbc.driver.OracleDriver");
            } catch(java.lang.ClassNotFoundException e1) {
                System.err.print("ClassNotFoundException:");
                System.err.println(e1.getMessage());
                
            }
            
            try {
                con = DriverManager.getConnection(url, "VALDECYR", "5525or");
                stmt = con.createStatement();
                int rs = stmt.executeUpdate(query);
                JOptionPane.showMessageDialog(null, "inserção de Funcionário efetuada com sucesso!");
                stmt.close();
                con.close();
            } catch(SQLException ex) {
                System.err.print("SQLException: ");
                System.err.println(ex.getMessage());
            }
        }// fim do botão 1
        else
            if (e.getSource()==b2) {
                /* 0 = YES_OPTION
                 * 1 = NO_OPTION
                 * 2 = CANCEL_OPTION
                 */
            
            int x = JOptionPane.showConfirmDialog(null, "Deseja Fechar a Janela?");        
            if (x == JOptionPane.YES_OPTION) {
                JOptionPane.showMessageDialog(null, "Fechando a janela de Cadastro de Funcionário");
                dispose();
            }
            
            }
    }
    
}

}

Abraço a todos,
Valdecyr

Valdecyr

tá certo minha porta do listener é a 1521 mesmo, eu conecto o banco pelo netbeans nessa porta

estou achando que o erro deve estar no Classpath

qual o caminho que devo fazer prá registrar na minha variável de sistema?

MiltonBastos

Valdecyr:
ok midianet use netbeans,

fiz tudo isso,
em adicionar biblioteca, escolhi a opção: Extensões de Layout do Swing, coloquei o jar lá da past lib que
havia criado no projeto, limpei e construi e agora tá dando o erro:

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:
127.0.0.1:1521

OK colega, o erro não é mais no Classpath não…
Sua string de conexão que está errada, vc esqueceu
de especificar o nome da instância do banco de dados.
No caso do Oracle XE, o database SEMPRE se chama “XE”.

Deixe assim sua string de conexão:

OracleDataSource ods = new OracleDataSource();
        String url = "jdbc:oracle:thin:@//192.168.123.123:1521/XE";
        ods.setURL(url);
	ods.setUser(pSchema); // aqui vc seta o usuário do banco
	ods.setPassword(pPassword); // aqui vc seta a senha
	Connection conn = ods.getConnection();

Claro, coloque corretamente o IP do seu servidor no lugar
do meu exemplo…

Valdecyr

Valew Milton! muito obrigado

era isso mesmo, depois deu um outro erro, proque eu tinha finalizado errado a query de inserção, acertei e deu certo…

muito obrigado mesmo a todos pela grande força.

com certeza esse é o melhor fórum que conheço prá Java!

Abraços,
Valdecyr

midianet

se vc usar netbeans ou eclipse e so apontar a refrencia para o aruivo ojdbc14.jar

que vai dar certo ao compilar o programa a idei ira copiar o jar

midianet

cara vc usa netbeans ou eclipse??

se for netbeans por exemplo, crie uma pasta lib no seu projeto.

copie esse jar la pra dentro
vai no netbeans
clica com o botao direito do mouse sobre o projeto
em propriedades vai em biblioteca
clica em adicionar bibilioteca, vai na pasta lib e escolhe o jar

manda limpar e construir o projeto

vai funcionar.

midianet

ah entao agora o erro e outro

o seu oracle ou nao esta no ar ou vc ta chamando a conexao de forma errada

tipo assim funciona

tem duas formas a oci e a thin de conectar tente essa

jdbc:oracle:oci:@xe, “usuario”, “senha”

vc tem q ter configurado o seu arquivo tnsnames.ora dentro da pasta oracle \network\admin tipo assim

XE =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = xe)
)
)

ou coisa parecida

Criado 10 de janeiro de 2008
Ultima resposta 11 de jan. de 2008
Respostas 14
Participantes 4