Conexão Oracle Database XE – JDBC – Java

Publicado: 7 de maio de 2014 em Java

Oracle Database XE é um banco de dados relacional que pode ser usado para armazenar, usar e modificar dados. O Java Database Connectivity (JDBC) padrão é usado por aplicativos Java para acesso e manipulação de dados em bancos de dados relacionais.

JDBC é um protocolo de acesso de banco de dados que permite que você se conecte a um banco de dados e execute instruções SQL e consultas no banco de dados. As bibliotecas de classe do núcleo de Java fornecem as APIs JDBC, java.sql e javax.sql. No entanto, JDBC é projetado para permitir que os vendedores forneçam drivers que oferecem a especialização necessária para um banco de dados específico.

JDBC Oracle

JDBC Oracle

Oracle JDBC Thin Driver

A Oracle recomenda usar o driver JDBC Thin para a maioria das necessidades. JDBC-OCI só necessário para recursos específicos de OCI. O driver Thin irá funcionar em qualquer sistema que tenha uma máquina virtual Java (JVM).

String de Conexão

Em computação, uma string de conexão, é uma cadeia de caracteres que especifica informações sobre uma fonte de dados e os meios de conexão com ela. É passado o código para um controlador (driver) ou provedor subjacente com o objetivo de se iniciar a conexão. Apesar de comumente ser usado para conexão de banco de dados, a fonte de dados também pode ser uma planilha eletrônica ou um arquivo de texto.

Oracle TNS Names

É um arquivo Net de configuração que define endereços de bancos de dados para estabelecer conexões com eles. Cada conexão criada por exemplo no Oracle SQL Developer ou qualquer outra ferramenta de desenvolvimento ou administração do banco de dados, é gravado uma string de conexão contendo os parâmetros para alcançar um servidor Oracle configurado. Por padrão o arquivo se encontra em:

Tnsnames.ora: C:\oraclexe\app\oracle\product\11.2.0\server\network\ADMIN

Conteúdo:

XE =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = XE)
    )
  )

Configurando Driver JDBC Oracle

Para usar o driver JDBC para Oracle você pode adiciona-lo em seu projeto, clicando com o botão direito do mouse em cima do nome do projeto e escolhendo a opção propriedades, adicione o arquivo de driver na biblioteca do seu projeto, a figura abaixo ilustra como efetuar este procedimento na IDE Eclipse:

Adicionando Oracle JDBC Driver

Adicionando Oracle JDBC Driver

Diretório: C:\oraclexe\app\oracle\product\11.2.0\server\jdbc\lib

Driver: ojdbc6.jar

Exemplo:

Neste exemplo usamos o driver JDBC Oracle Thin para efetuar uma conexão no banco de dados, para criar o banco de dados você pode usar nosso walkthrough de como instalar as o banco de dados Oracle XE e a ferramenta Oracle SQL Developer.

Java

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import java.sql.*;

import javax.swing.BorderFactory;
import javax.swing.Box;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;

public class ConexaoOracle implements ActionListener
{
	// Declara componentes
	private JLabel ltitulo;
	private JLabel lusuario;
	private JLabel lsenha;
	private JTextField tusuario;
	private JPasswordField tsenha;
	private JButton botao;
	private JFrame menssagem;

	// Declara objetos de conexão
	private Connection conn;
	private Statement query;

	public Container criaPainel()
	{
		// Cria painel principal
		JPanel painel = new  JPanel();
		painel.setLayout(new BorderLayout());
		painel.setBorder(BorderFactory.createEmptyBorder(20, 20, 20, 20));

		// Cria componente titulo
		ltitulo = new JLabel("Conexão Oracle XE 11g: @localhost:1521:xe");

		painel.add(ltitulo, BorderLayout.PAGE_START);

		// Cria painel de usuario
		JPanel painelDados = new JPanel(new GridLayout(0, 2, 10, 10));

		// Cria componentes de usuario
		lusuario = new JLabel("Digite seu Usuario: ");
		lsenha   = new JLabel("Digite sua Senha: ");
		tusuario = new JTextField();
		tsenha   = new JPasswordField();

		// Define tamanho dos campos
		tusuario.setPreferredSize( new Dimension(120, 20));
		tsenha.setPreferredSize( new Dimension(120, 20));

		// Adiciona componentes no grid do painel
		painelDados.add(Box.createVerticalStrut(10));
		painelDados.add(Box.createVerticalStrut(10));
		painelDados.add(lusuario);
		painelDados.add(tusuario);
		painelDados.add(lsenha);
		painelDados.add(tsenha);
		painelDados.add(Box.createVerticalStrut(10));
		painelDados.add(Box.createVerticalStrut(10));

		// Cria botão
		botao = new JButton("Conectar");
		botao.addActionListener(this);

		// Adiciona componentes no painel principal
		painel.add(painelDados);
		painel.add(botao, BorderLayout.PAGE_END);

		return painel;
	}

	public static void criaGUI()
	{
		// Cria formulario
		JFrame formulario = new JFrame("Oracle XE 11g");
		formulario.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

		// cria classe da conexão
		ConexaoOracle conectar = new ConexaoOracle();

		// Define painel
		formulario.setContentPane(conectar.criaPainel());
		formulario.pack();

		// Mostra aplicação
		formulario.setVisible(true);
	}

	public void conectar(String login, String senha) {
        try
        {
        	// Define Driver de conexão JDBC thin
            Class.forName("oracle.jdbc.driver.OracleDriver");
            conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe", login, senha);

            //Executa pedido SQL
            query = conn.createStatement();
            JOptionPane.showMessageDialog(menssagem, "Conexão Efetuada com sucesso!");
        } 

        catch (ClassNotFoundException ex)
        {
            ex.printStackTrace();
        }

        catch (SQLException ex)
        {
        	JOptionPane.showMessageDialog(menssagem, "Erro na conexão!");
        	ex.printStackTrace();
        }
    }

	public void actionPerformed(ActionEvent arg0)
	{
	   // Verfica tamanho da senha
		char[] tamanho = tsenha.getPassword();

		if (tamanho.length == 0)

		{
		  	JOptionPane.showMessageDialog(menssagem, "Digite uma senha!");
		}
		else
		{
			// recupera senha do Java Password Field
			String psenha = new String(tsenha.getPassword());

			//Cria conexão
			ConexaoOracle conecta = new ConexaoOracle();
		    conecta.conectar(tusuario.getText() , psenha);

		}

	}

	public static void main(String[] args)
	{
		javax.swing.SwingUtilities.invokeLater(new Runnable() {

			public void run() {

				// Cria e exibe GUI
				criaGUI();

			}
		});      

	}
}
comentários
  1. Alfredo disse:

    como faço para conectar o Oracle 10g com o Netbeans utilizando a Driver OCI

  2. Olá Alfredo,

    O driver OCI é para C no entanto ele é usado como base para vários drivers, você pode utilizar o Oracle Instant Client 12c para baixar o driver OCI, ele está incluso no pacote e conecta em servidores de versões anteriores.

    http://www.oracle.com/technetwork/database/features/instant-client/index-100365.html

    Para usar OCI com C e C++:
    http://www.oracle.com/webfolder/technetwork/tutorials/obe/db/11g/r2/prod/appdev/oci/oci.htm

    Agora se você estiver usando Java e quer conectar usando OCI:

    No NetBeans você adiciona o driver normalmente e utiliza
    import oracle.jdbc.oci.*; ao invés de import java.sql.*;

    se olhar na imagem do eclipse acima você verá que o driver JDBC possui o pacote oracle.jdbc.oci

    Exemplo completo neste link:
    http://docs.oracle.com/cd/B28359_01/java.111/b31224/ociconpl.htm

    Espero ter ajudado.
    Abraços.

  3. Hudson Carvalho da Silva disse:

    Bom dia!

    Estou precisando muito utilizar o netbeans para desenvolver um web service que vai disponibilizar algumas tabelas do meu banco de dados oracle.
    Pra iniciar o meu projeto, preciso criar uma conexão entre o NetBeans e o DB Oracle. Na minha máquina já tem instalado o Client Oracle, já acesso ferramentas de PLSQL
    Dados das máquinas:
    – Banco de dados Oracle v.11.2.04 – IP do servidor na rede: 192.168.0.7
    – Minha máquina : IP 192.168.0.170 (Já está instalado o netbeans) Windows 7 – 64bits
    – Meu TNS Names:
    BDTESTE =
    (DESCRIPTION =
    (ADDRESS_LIST =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.7)(PORT = 1521))
    )
    (CONNECT_DATA =
    (SID = BDTESTE)
    )
    )

    ME AJUDEM POR FAVOR

  4. Olá Hudson

    Este tutorial tmb serve para o Netbeans ou qualquer IDE que vc esteja usando.
    Caso vc queira usar a IDE do Netbeans para manipular o banco de dados, use este tutorial da documentação oficial:

    https://netbeans.org/kb/docs/ide/oracle-db_pt_BR.html

    Abs.

Deixar mensagem para Alfredo Cancelar resposta