// 
//     Licensed to the Apache Software Foundation (ASF) under one
//     or more contributor license agreements.  See the NOTICE file
//     distributed with this work for additional information
//     regarding copyright ownership.  The ASF licenses this file
//     to you under the Apache License, Version 2.0 (the
//     "License"); you may not use this file except in compliance
//     with the License.  You may obtain a copy of the License at
// 
//       http://www.apache.org/licenses/LICENSE-2.0
// 
//     Unless required by applicable law or agreed to in writing,
//     software distributed under the License is distributed on an
//     "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
//     KIND, either express or implied.  See the License for the
//     specific language governing permissions and limitations
//     under the License.
//

= Trabalhando com o Banco de Dados Java DB (Derby)
:jbake-type: tutorial
:jbake-tags: tutorials 
:jbake-status: published
:icons: font
:syntax: true
:source-highlighter: pygments
:toc: left
:toc-title:
:description: Trabalhando com o Banco de Dados Java DB (Derby) - Apache NetBeans
:keywords: Apache NetBeans, Tutorials, Trabalhando com o Banco de Dados Java DB (Derby)

Este documento demonstra como configurar uma conexão com o banco de dados link:http://www.oracle.com/technetwork/java/javadb/overview/index.html[+Java DB+] no NetBeans IDE. Quando uma conexão for estabelecida, você poderá começar a trabalhar com o banco de dados no IDE, podendo criar tabelas, preenchê-las com dados, executar instruções SQL e consultas e mais.

O banco de dados Java DB é uma distribuição da Sun com suporte do link:http://db.apache.org/derby/[+Apache Derby+]. O Java DB é um servidor de banco de dados com base em padrões, seguro e totalmente transacional, escrito inteiramente em Java, e dá suporte total a SQL, JDBC API e à tecnologia Java EE. O banco de dados Java DB é encapsulado com o servidor de aplicações link:http://glassfish.dev.java.net/[+GlassFish+] e está incluído no link:http://download.oracle.com/javase/6/[+JDK 6+] também. Para obter mais informações sobre o banco de dados Java DB, consulte a link:http://www.oracle.com/technetwork/java/javadb/documentation/index.html[+documentação oficial+].


image::images/netbeans-stamp-80-74-73.png[title="O conteúdo desta página se aplica ao NetBeans IDE 7.2, 7.3, 7.4 e 8.0"]

NOTE: O Java DB é instalado quando o JDK 7 ou JDK 8 é instalado (com exceção do
Mac OS X). Se estiver usando Mac OS X é possível fazer o download e instalar o
link:http://www.oracle.com/technetwork/java/javadb/downloads/index.html[+Java DB+]
manualmente ou usar o Java DB que é instalado pela versão do Java EE do
instalador do NetBeans IDE.


== Configurando o Banco de Dados

Se você tem o GlassFish Server Enterprise registrado na instalação NetBeans IDE, o Java DB já estará registrado. Portanto, é possível pular para <<starting,Iniciando o Servidor e Criando um Banco de Dados>>.

Se fizer download do GlassFish Server separadamente e necessitar de ajuda ao registrar no NetBeans IDE, consulte *Registrando uma Instância do GlassFish Server* no Conteúdo de Ajuda IDE (F1).

Se você tiver submetido o Java DB a download, siga as etapas a seguir.

1. Execute o arquivo de autoextração. Uma pasta denominada 'javadb' será criada no mesmo local do arquivo. Se você tiver apenas submetido o Java DB a download e desejar que o servidor de banco de dados fique em um local diferente de onde ele foi extraído, deverá realocá-lo agora.
2. No sistema, crie um novo diretório para ser utilizado como diretório home para as instâncias individuais do servidor de banco de dados. Por exemplo, é possível criar esta pasta no diretório-raiz Java DB (javadb) ou em qualquer outra localização.

Antes de prosseguir, é importante compreender os componentes encontrados no diretório raiz do Java DB:

* O subdiretório  ``demo``  contém os programas de demonstração.
* O subdiretório  ``bin``  contém os scripts para executar utilitários e configurar o ambiente.
* O subdiretório  ``javadoc``  contém a documentação da API que foi gerada de comentários de código-fonte.
* O subdiretório  ``docs``  contém a documentação do Java DB.
* O subdiretório  ``lib``  contém os arquivos jar do Java DB.


== Registrando o Banco de Dados no NetBeans IDE

Agora que o banco de dados está configurado, execute as etapas a seguir para registrar o Java DB no IDE.

1. Na janela Serviços, clique com o botão direito do mouse no nó do Banco de Dados Java DB e escolha Propriedades para abrir a caixa de diálogo das Definições do Java DB.
2. No campo de texto Instalação de Java DB, insira o caminho para o diretório-raiz de Java DB (javadb) especificado na etapa anterior.
3. Para a Localização do Banco de Dados, use o local default se um local já foi fornecido. Clique em OK

Por exemplo, a localização default pode parecer com  ``C:\Documents and Settings\username\.netbeans-derby``  em um computador Windows.

image::images/javadb-props.png[title="exemplo de definições default do servidor e banco de dados Java DB"]

*Observação.* Se o campo Localização do Banco de Dados estiver vazio será necessário definir o caminho para o diretório que contém seus bancos de dados. Será necessário criar um diretório para os bancos de dados se nenhum diretório existir.


== Iniciando o Servidor e Criando um Banco de Dados

As opções de menu do Banco de Dados Java DB são exibidas quando você clica com o botão direito do mouse no nó Java DB na janela Serviços. Os itens desse menu contextual permitem o início e a interrupção do servidor de banco de dados, a criação de uma nova instância de banco de dados e o registro de servidores de bancos de dados no IDE (como demonstrado na etapa anterior). Para iniciar o servidor de banco de dados:

1. Na janela Serviços, clique com o botão direito do mouse no nó Java DB e escolha Iniciar Servidor. Observe a seguinte saída na janela de Saída, indicando que o servidor foi iniciado:

image::images/output-start-db.png[]

[start=2]
. Clique com o botão direito do mouse no nó do Java DB e escolha Criar Banco de Dados para abrir a caixa de diálogo de criação do Banco de Dados do Java DB.
. Insira  ``contato``  para o Nome do Banco de Dados.
. Digite  ``nbuser``  para o Nome de Usuário e a Senha. Clique em OK.

image::images/javadb-createdb.png[]

*Observação.* Localização do Banco de Dados é o local default definido durante a instalação do Java DB do GlassFish. Se você tiver instalado o Java DB separadamente, essa localização pode ser diferente.

Após você criar o Banco de Dados, se você expandir os bancos de dados nó na janela Serviços que você pode ver o IDE criada uma conexão de banco de dados e que o banco de dados foi adicionado à lista sob o nó do BD Java.


== Estabelecendo Conexão com o Banco de Dados

Até agora, você iniciou com êxito o servidor de banco de dados e criou uma instância de banco de dados denominada  ``contact``  no IDE. Na janela Serviços do IDE você pode realizar as seguintes tarefas comuns em estruturas de banco de dados.

* criação, exclusão, modificação de tabelas
* preenchimento de tabelas com dados
* exibição de dados tabulares
* execução de consultas e instruções SQL

Para começar a trabalhar com o banco de dados  ``contact`` , você precisa criar uma conexão com o mesmo. Para estabelecer conexão com o banco de dados  ``contato``  execute as etapas a seguir.

1. Expanda o nó do Bancos de Dados na janela Serviços e localize o novo banco de dados e os nós de conexão de banco de dados.

O nó de conexão do banco de dados( image:images/connection-node-icon.png[]) é exibido no nó dos Bancos de Dados. O nó do banco de dados é exibido no nó do Java DB.

image::images/services-window.png[]

*Observação.* Você também visualizará a conexão do banco de dados `amostra [app em app]` que é o esquema do banco de dados default.

[start=2]
. Clique com o botão direito do mouse no nó da conexão do banco de dados *contact*( ``jdbc:derby://localhost:1527/contact [nbuser em NBUSER]`` ) e escolha Conectar.

O ícone do nó da conexão aparecerá em todo (image:images/connection-node-icon.png[]), significando que a conexão foi bem-sucedida.

[start=3]
. Crie um nome de exibição conveniente para o banco de dados clicando com o botão direito do mouse no nó da conexão do banco de dados ( ``jdbc:derby://localhost:1527/contact [nbuser on NBUSER]`` ) e selecione Renomear. Digite  ``BD de Contato``  no campo de texto e clique em Ok.


== Criando Tabelas

O banco de dados  ``contact``  recém-criado está vazio no momento. Ele não contém ainda tabelas ou dados. No NetBeans IDE, você pode adicionar uma tabela de banco de dados usando a caixa de diálogo Criar Tabela ou inserindo uma instrução SQL e executando-a diretamente do Editor SQL. É possível explorar ambos os métodos:

* <<createTable,Usando a Caixa de Diálogo Criar Tabela>>
* <<sqlEditor,Usando o Editor SQL>>


=== Usando a Caixa de Diálogo Criar Tabela

1. Expanda o nó de conexão  ``BD de Contato``  e observe que existem vários subnós do esquema. O esquema app é o único esquema que se aplica a este tutorial. Clique com o botão direito do mouse no nó APP e escolha Definir como Esquema Default.

2. Expanda o nó APP e observe que existem três subpastas: Tabelas, Views e Procedimentos. Clique com o botão direito no nó Tabelas e escolha Criar Tabela para abrir a caixa de diálogo Criar Tabela.
3. No campo de texto Nome da Tabela, digite  ``AMIGOS`` .
4. Clique em Adicionar Coluna. A caixa de diálogo Adicionar Coluna é exibida.
5. Para Nome de Coluna, insira  ``id`` . Para Tipo de Dados, selecione  ``INTEIRO``  da lista drop-down.
6. Em Restrições, marque a caixa de seleção Chave Primária para especificar que essa coluna é a chave primária da tabela. Todas as tabelas de bancos de dados relacionais devem conter uma chave primária. Observe que quando você marca a caixa de seleção Chave Primária, as caixas de seleção Índice e Exclusivo são automaticamente marcadas e a caixa de seleção Nulo é desmarcada. Isso ocorre porque as chaves primárias são usadas para identificar uma linha exclusiva no banco de dados e por default são usadas como o índice da tabela. Como todas as linhas devem ser identificadas, as chaves primárias não podem conter um valor  ``Nulo`` .

image::images/add-column.png[]

[start=7]
. Repita este procedimento agora especificando campos conforme exibido na tabela abaixo:

|===

|Chave |Índice |Nulo |Exclusiva |Nome da coluna |Tipo de dados |Tamanho 

|[marcada] |[marcada] |[marcada] |id |INTEIRO |0 

|[marcada] |firstName |VARCHAR |20 

|[marcada] |lastName |VARCHAR |20 

|[marcada] |nickName |VARCHAR |30 

|[marcada] |friendSince |DATA |0 

|[marcada] |e-mail |VARCHAR |60 
|===

Você está criando uma tabela chamada  ``AMIGOS``  que contém os seguintes dados para cada registro de contato:

* *Nome*
* *Sobrenome*
* *Apelido*
* *Amigo Desde*
* *Endereço de E-mail*

image::images/create-table-friends.png[]

[start=9]
. Quando tiver certeza que a caixa de diálogo Criar Tabela contém as mesmas especificações que as exibidas acima, clique em OK. O IDE gera a tabela  ``AMIGOS``  no banco de dados, e você pode ver um novo nó da tabela  ``AMIGOS``  (image:images/table-node.png[]) são exibidos no nó de Tabelas. Sob o nó da tabela as colunas (campos) são listadas, iniciando com a chave primária (image:images/primary-key-icon.png[]).

image::images/friends-table.png[]


=== Usando o Editor SQL:

1. No janela Serviço, clique com o botão direito no nó de conexão  ``BD de Contato``  ou no nó Tabelas embaixo e escolha o Comando Executar. Uma tela em branco é aberta no Editor SQL na janela principal.
2. Insira a seguinte consulta no Editor SQL. Esta é uma definição da tabela COLEGAS que você irá criar:

[source,sql]
----

CREATE TABLE "COLLEAGUES" (
    "ID" INTEGER not null primary key,
    "FIRSTNAME" VARCHAR(30),
    "LASTNAME" VARCHAR(30),
    "TITLE" VARCHAR(10),
    "DEPARTMENT" VARCHAR(20),
    "EMAIL" VARCHAR(60)
);
----

NOTE: instruções e consultas formadas no Editor SQL faz parse em SQL. A linguagem SQL utiliza regras de sintaxe estritas com as quais você deve estar familiarizado ao trabalhar no editor do IDE. A sintaxe do SQL também pode diferir dependendo do sistema de gerenciamento de banco de dados. Consulte o link:http://www.oracle.com/technetwork/java/javadb/documentation/index.html[+Manual de Referência do JavaDB+] para obter instruções específicas.

[start=3]
. Clique no botão Executar SQL (image:images/run-sql-button.png[]) na barra de tarefas na parte superior do editor (Ctrl-Shift-E) para executar a consulta. Na janela de Saída (Ctrl-4), uma mensagem é exibida indicando que uma instrução foi executada com êxito.

image::images/run-query.png[]

[start=4]
. Para verificar as alterações, clique com o botão direito no nó de conexão  ``BD de Contato ``  na janela Serviços e escolha Atualizar. Isso atualiza o componente UI de Runtime para o status atual do banco de dados especificado. Esta etapa é necessária ao executar consultas do Editor SQL no NetBeans IDE. Observe que o novo nó da tabela COLEGAS (image:images/table-node.png[]) é exibida agora em Tabelas na janela Serviços.


== Adicionando Dados na Tabela

Agora que você criou uma ou mais tabelas no banco de dados  ``contact`` , pode começar a preenchê-lo com dados. Existem várias maneiras que você pode adicionar registros em sua tabela.

* <<sqlstatement,Escreva uma instrução SQL>> no Editor SQL que fornece um valor para cada campo presente no esquema da tabela.
* <<usesqleditor,Utilize o Editor SQL>> para adicionar registros à tabela.
* <<using,Utilize um script SQL externo>> para importar registros para a tabela.

Leia as seções abaixo para aprender como utilizar todos os métodos de preenchimento da tabela  ``AMIGOS``  com dados.


=== Executando uma Instrução SQL

1. Expanda as Tabelas no nó do  ``BD de Contato``  na janela Serviços, clique com o botão direito na tabela  ``AMIGOS``  e escolha executar comando para abrir a janela do Editor SQL.
2. No Editor SQL, insira a seguinte instrução.

[source,sql]
----

INSERT INTO APP.FRIENDS VALUES (1,'Theodore','Bagwell','T-Bag','2004-12-25','tbag@foxriver.com')
----

Enquanto estiver digitando, é possível utilizar a funcionalidade autocompletar código do Editor SQL.

[start=3]
. Clique com o botão direito do mouse no Editor SQL e escolha Executar Instrução. A janela de Saída exibe uma mensagem indicando que uma instrução foi executada com êxito.
. Para verificar se o novo registro foi adicionado à tabela  ``AMIGOS`` , clique com o botão direito do mouse no nó da tabela  ``AMIGOS``  na janela Serviços e escolha Exibir Dados.

Quando você escolhe Exibir Dados, é gerada automaticamente no painel superior do Editor SQL uma consulta para selecionar todos os dados da tabela. Os resultados da instrução são exibidos no painel inferior do Editor de SQL. Nesse caso, a tabela  ``AMIGOS``  é exibida no painel inferior. Observe que uma nova linha foi adicionada com os dados que você acabou de fornecer da instrução SQL.

image::images/new-record.png[]


=== Usando o Editor SQL

1. Clique com o botão direito no nó da tabela  ``AMIGOS``  e escolha Exibir Dados (se não tiver feito isso na última etapa da seção anterior).
2. Clique no botão Inserir Registro(s) ( ``Alt-I`` ) para adicionar uma linha.
A caixa de diálogo Inserir Registros aparece.
3. Clique em cada célula e insira registros. Observe que para células com tipo de dados Data, é possível escolher uma data do calendário. Clique em OK quando tiver acabado. 

image::images/insert-records.png[]

No Editor SQL, é possível ordenar os resultados clicando na linha de cabeçalho, modifique e delete registros existentes e veja o script SQL para ações que estão sendo feitas no editor (o comando Exibir Script SQL do menu pop-up).


==  Deletando Tabelas

Na etapa a seguir, use um script SQL externo para criar uma nova tabela  ``COLEGAS`` . Entretanto, uma tabela  ``COLEGAS``  acabou de ser criada na seção <<sqlEditor,Utilizando o Editor SQL>> acima. Para deixar claro que o script SQL realmente cria uma nova tabela, você pode deletar a tabela  ``COLEGAS``  já criada agora. Para deletar uma tabela do banco de dados execute as seguintes etapas.

1. Expanda o nó Tabelas no nó de conexão do banco de dados na janela Serviços.
2. Clique com o botão direito do mouse na tabela que você deseja deletar e escolha Deletar.


== Usando um Script SQL Externo

A emissão de comandos de um script SQL externo é uma forma popular de gerenciar o banco de dados. É possível já ter sido criado um script SQL em outro lugar, e deseja importá-lo para o NetBeans IDE para executá-lo em um banco de dados específico.

Neste exercício, o script criará uma nova tabela denominada  ``COLEGAS``  e a preencherá com dados. Execute as seguintes etapas para executar o script no banco de dados  ``contato`` .

1. Faça download de link:https://netbeans.org/project_downloads/usersguide/colleagues.sql[+colleagues.sql+] em seu sistema local
2. Escolha Arquivo > Abrir Arquivo no menu principal do IDE. No browser de arquivos, vá até o local do arquivo  ``colleagues.sql``  salvo e clique em Abrir. O script se abre automaticamente no Editor SQL.

Se preferir, copie o conteúdo de link:https://netbeans.org/project_downloads/usersguide/colleagues.sql[+colleagues.sql+] e, depois abra o editor SQL e cole o conteúdo do arquivo no editor SQL.

[start=3]
. Certifique-se que sua conexão com  ``BD de Contato``  esteja selecionada na caixa drop-down Conexão na barra de ferramentas na parte superior do editor.

image::images/conn-drop-down.png[]

[start=4]
. Clique no botão Executar SQL (image::images/run-sql-button.png[]) na barra de tarefas do Editor SQL. O script é executado no banco de dados selecionado e qualquer feedback é gerado na janela de Saída.
. Para verificar as alterações, clique com o botão direito no nó de conexão  ``BD de Contato ``  na janela Serviços e escolha Atualizar. Observe que a nova tabela  ``COLEGAS``  do script SQL agora é exibida como um nó de tabela em  ``contact``  na janela Serviços.
. Para exibir os dados contidos nas novas tabelas, clique com o botão direito na tabela  ``COLEGAS``  e escolha Exibir Dados. Dessa maneira, você também pode comparar os dados tabulares com os dados contidos no script SQL para ver se eles coincidem.


==  Recriando Tabelas de um Banco de Dados Diferente

Se você tiver uma tabela de outro banco de dados que deseja recriar no banco de dados em que está trabalhando do NetBeans IDE, o IDE oferece uma ferramenta útil para isso. É necessário primeiro registrar o segundo banco de dados no IDE, de forma similar à que foi descrita no início deste tutorial. Para a finalidade deste tutorial, use o banco de dados de  ``amostra``  incluído com o Java DB. Esse processo é realizado essencialmente em duas partes: primeiro você 'captura' a definição da tabela selecionada, depois pode recriar a tabela no banco de dados escolhido:

1. Estabeleça conexão com o banco de dados de  ``amostra``  clicando com o botão direito no nó de conexão nos Bancos de Dados na janela Serviços e escolhendo Conectar (o usuário e a senha é  ``app`` ).
2. Expanda o nó das Tabelas na conexão do banco de dados  ``amostra`` , clique com o botão direito do mouse na tabela  ``CLIENTE``  e escolha Obter Estrutura.

image::images/grab-structure.png[]

[start=3]
. Na caixa de diálogo Obter Tabela exibida, especifique um local no computador para salvar o arquivo obtido que será criado. Clique em Salvar.

O arquivo obtido registra a definição de tabela da tabela selecionada.

[start=4]
. Expanda o nó do esquema APP na conexão do banco de dados  ``BD de Contato`` , clique no nó Tabelas e escolha Recriar Tabela para abrir a caixa de diálogo Recriar Tabela.
. Na caixa de diálogo Recriar Tabela, navegue até o local no qual você salvou o arquivo de obtenção  ``CLIENTE``  e clique em Abrir para abrir a caixa de diálogo Nome da Tabela.

image::images/recreate-table.png[]

[start=6]
. Neste ponto, é possível alterar o nome da tabela ou editar a definição da tabela. Do contrário, clique em OK para criar imediatamente a tabela no banco de dados  ``contact`` . Um novo nó de tabela  ``CLIENTE``  é exibido abaixo do nó de conexão BD de  ``Contato`` .

image::images/new-customer-node.png[]

Se você exibir os dados na nova tabela  ``CLIENTE``  você verá que não há registros no banco de dados, mas que a estrutura da tabela é idêntica à tabela que você obteve.

link:/about/contact_form.html?to=3&subject=Feedback:%20Working%20With%20Java%20DB[+Envie-nos Seu Feedback+]



== Consulte Também

Isto conclui o tutorial Trabalho com o Banco de Dados Java DB (Derby). Este tutorial demonstrou como configurar uma conexão com o banco de dados Java DB no NetBeans IDE. Em seguida, ele demonstrou como criar, exibir, modificar e deletar tabelas na janela Serviços do IDE. Ele também exibiu como trabalhar com o Editor SQL para adicionar dados em tabelas e usar a funcionalidade do IDE permitindo que você recriasse tabelas usando definições de outros bancos de dados.

Para tutoriais relacionados e mais avançados, consulte os seguintes recursos:

* link:mysql.html[+Estabelecendo Conexão com um Banco de Dados MySQL+]. Demonstra como configurar um banco de dados MySQL e conectar-se a ele no NetBeans IDE.
* link:../web/mysql-webapp.html[+Criando uma Aplicação Web Simples Usando um Banco de Dados MySQL+]. Demonstra como criar uma aplicação Web simples que se conecta com um servidor de banco de dados MySQL.
* link:http://platform.netbeans.org/tutorials/nbm-crud.html[+Tutorial da Aplicação CRUD da Plataforma do NetBeans.+] Demonstra como integrar um banco de dados Java DB com uma aplicação da Plataforma do NetBeans.
