Jdbc para oracle 10g xe

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

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

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

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

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:

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

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

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

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.;
import java.awt.event.
;
import java.sql.;
import javax.swing.
;

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

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?

[quote=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
[/quote]

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…

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

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

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.

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