Você está na página 1de 40

Técnicas de

Programação
Material Teórico
Eventos, Aplicativos com Banco de Dados e Organização de
Componentes De Layouts

Responsável pelo Conteúdo:


Prof. Ms. Douglas Almendro

Revisão Textual:
Profª. Ms. Selma Aparecida Cesarin
Eventos, Aplicativos com Banco de
Dados e Organização de Componentes
de Layouts

·· Operações com Banco de Dados e JDBC


·· Criando uma Base de Dados MYSQL
·· Criando uma Tabela no MYSQL
·· Criando uma Aplicação CRUD Em JAVA

··Nesta Unidade 4 iremos aprender como conectar nossa aplicação a um


Banco de dados por meio da API JDBC do Java.
··Desenvolveremos uma aplicação “CRUD”, que é o acrônimo de Create,
Read, Update e Delete.
··O Banco de dados que usaremos é o MySQL. É um banco gratuito, de
fácil instalação, e é um dos mais importantes bancos de dados relacionais
do mercado.

Estamos iniciando nossos estudos sobre Eventos, Aplicativos com Banco de Dados, da
Disciplina de Técnicas de Programação.
Ao término deste estudo, desejamos que você seja capaz de interpretar e criar uma interface
gráfica com todas as propriedades que a linguagem disponibiliza juntando com o Banco
de Dados.
Para ajudá-lo(a), realize a leitura dos textos indicados, acompanhe e refaça os exemplos
resolvidos, além de treinar com as atividades práticas disponíveis e suas resoluções, ao final
do conteúdo.

5
Unidade: Eventos, Aplicativos com Banco de Dados e Organização de Componentes de Layouts

Contextualização

Nesta Unidade, vamos construir um projeto mais elaborado, na ferramenta NetBeans. Siga
atentamente o tutorial de criação de projetos e pacotes.
Abordaremos alguns componentes farão parte do layout da tela de uma interface gráfica,
juntamente com o Banco de dados.
Assim, durante o curso, veremos, também, que existem várias situações nas quais podemos
usar os componentes gráficos, incluindo-os nos projetos mais elaborados.
Esse ferramental teórico servirá para sua vida como analista/programador.

6
Operações com Banco de Dados e JDBC

O QUE É JDBC ?
JDBC significa Java Database Connectivity. É uma API Java padrão para banco de dados
independente de conectividade entre a linguagem de programação Java e uma grande variedade
de bancos de dados.
Esta API fornece um conjunto de interfaces para cada uma das tarefas comumente associado
ao uso de banco de dados, como por exemplo:
··Conexão com um banco de dados;
··Consultas no banco de dados;
··Visualização ou Alteração de registros.
O Pacote para acessar essas interfaces é java.sql.
Dentro do JDBC, ainda existe outro componente indispensável para acessar o Banco de
dados, o Driver. Para conectarmos a um Banco de dados, precisamos fazer uso do Driver
específico para o Banco.

Explore
Saiba mais sobre o Driver MySQL em: http://dev.mysql.com/doc/connector-j/en/index.html.

VAMOS À PRÁTICA
Antes de qualquer coisa, precisamos criar o ambiente de Banco de dados. Devemos ter um
serviço de banco de dados rodando (Servidor de Banco de dados) e uma Database com a
tabela que nossa aplicação vai manipular.
Como dito, iremos usar o MySQL como Banco de dados de nossa aplicação. Para o nosso
exemplo, iremos baixar uma versão Portable de um servidor MySQL, o Uniform Server. Saiba
mais sobre esse software em http://www.uniformserver.com/.
Para criar as tabelas necessárias para a nossa aplicação, usaremos o Heidisql. Saiba mais
sobre esse software em http://www.heidisql.com/

7
Unidade: Eventos, Aplicativos com Banco de Dados e Organização de Componentes de Layouts

Criando uma Base de Dados MYSQL

Passo 1
Baixe o Uniform Server acessando o link: http://sourceforge.net/projects/miniserver/files/
latest/download?source=files. Localize o arquivo e clique duas vezes sobre o executável e
selecione a opção “Extract”.

Após extrair todos os arquivos, localize e execute o arquivo “UniController”. Digite 123 para
a senha do Root e clique em OK. Na próxima tela, clique em OK novamente.

Passo 2
Ative o serviço MySQL clicando no botão “Start MySQL”. Se o serviço for inicializado com
sucesso, o quadro ao lado do botão ficará verde.

8
Passo 3
Crie uma base de dados clicando no menu MySQL/Database create – delete.

Digite “dbAula4” no campo Enter database name to create e clique em Create Database e
feche a tela.

9
Unidade: Eventos, Aplicativos com Banco de Dados e Organização de Componentes de Layouts

Na tela principal do UniServer, confira se o Serviço está rodando (indicador em verde) e


minimize a aplicação. Nunca feche este aplicativo.

Feito isso, a aplicação vai para a bandeja do Windows; para maximizar o programa, é só
clicar duas vezes sobre o ícone.

10
Concluindo todos esses passos, temos:
··Um serviço MySQL rodando;
··Uma Base de dados MySQL ativa.

Criando uma Tabela no MYSQL

Passo 1
Baixe o Heidisql acessando o link: http://www.heidisql.com/downloads/releases/
HeidiSQL_8.3_Portable.zip. Extraia a pasta baixada, localize o arquivo “heidisql” e execute-o.

11
Unidade: Eventos, Aplicativos com Banco de Dados e Organização de Componentes de Layouts

Na tela seguinte, clique no botão “New”.

É preciso apenas digitar a senha do root (123); a configuração desta tela deve ser como na
figura a seguir:

12
Clique no botão “Save” e em seguida no botão “Open”.

Passo 2
Clique sobre “dbaula4”.

13
Unidade: Eventos, Aplicativos com Banco de Dados e Organização de Componentes de Layouts

Na aba “Query”, digite a seguinte instrução SQL:

CREATE TABLE `curso` (


`Sigla` CHAR(10) ,
`Nome` VARCHAR(64) ,
`Descricao` VARCHAR(256)
)

Em seguida, pressione a tecla F9 ou clique no botão indicado na figura a seguir.

14
Agora, vamos dar um “refresh” para atualizar as informações exibidas de nossa base de dados.
Clique com o botão direito do mouse sobre a nossa database e escolha a opção “Refresh”.

Podemos agora perceber que foi criada uma tabela com o nome de Curso.

Concluímos o ambiente de banco de dados. Agora podemos seguir adiante e criar uma
aplicação que vai se conectar e manipular tabelas em nosso banco de dados.

15
Unidade: Eventos, Aplicativos com Banco de Dados e Organização de Componentes de Layouts

Criando uma Aplicação CRUD Em JAVA

Para essa etapa, precisamos:


··Netbeans7 ou superior;
··SDK Java 6 ou superior;
··Acesso a um banco de dados MySQL.
Como já vimos, “CRUD” é o acrônimo de Create, Read, Update e Delete. Iremos
desenvolver uma aplicação que terá acesso a um banco de dados MySQL.
Nossa aplicação irá executar a inserção, alteração, leitura e exclusão de dados em uma tabela.
Para nosso exemplo, certifique-se sempre se o serviço de banco de dados está ativo.

Vamos à Prática
Passo 1
Abra o Netbeans, clique no menu Arquivo/Novo Projeto.

16
Escolha a opção “Aplicação Java”.

Digite “Aula 4” no campo Nome do Projeto. Em seguida, clique no botão “Procurar”.

17
Unidade: Eventos, Aplicativos com Banco de Dados e Organização de Componentes de Layouts

Crie uma pasta chamada Aula 4 na área de trabalho e clique em abrir. Na tela seguinte,
clique em Finalizar.

Passo 2
Clique no nome do projeto com o botão direito do mouse e em seguida selecione a opção
Novo/FormJFrame.

18
Digite “Principal” no campo Nome da Classe e clique em finalizar.

Passo 3
Clique com o botão direito do mouse em cima do Frame e selecione a opção Definir Layout/
Layout Nulo.

19
Unidade: Eventos, Aplicativos com Banco de Dados e Organização de Componentes de Layouts

Abra a paleta Swing e adicione os componentes, como na figura a seguir.

Os componentes a serem adicionados são:


··8 – Botões (JButton);
··2 – Campos de texto (JTextField);
··1 – Área de Texto (JTextArea);
··3 – Rótulos (JLabel);

Altere a propriedade “Nome da variável” dos seguintes componentes:


··Para o campo referente à Sigla, altere para “txtSigla”;
··Para o campo referente à Nome, altere para “txtNome”;
··Para o campo referente à Descrição, altere para “txtDescr”.

20
Lembrando que para acessar a propriedade “Nome da variável” do componente, é preciso
clicar com o botão direito do mouse sobre o componente, selecionar a opção Propriedades e na
Aba código alterar a propriedade desejada.

Passo 3
Adicione o Drive JDBC MySQL. Clique com o botão direito sobre a pasta Bibliotecas e
selecione a opção Adicionar Biblioteca.

21
Unidade: Eventos, Aplicativos com Banco de Dados e Organização de Componentes de Layouts

Na tela a seguir, localize e selecione a opção Driver JDBC do MySQL e clique em Adicionar
Biblioteca.

Passo 4
Importe as classe dos pacotes javax.swing e java.sql digitando nas primeiras linhas do código
Java o seguinte:

importjavax.swing.*;
importjava.sql.*;

Crie as seguintes variáveis logo a seguir da linha Public class Principal:

public Connection conn = null;


public Statement stmt;
public ResultSet rs;

22
Passo 5
Crie um evento ActionPerformed para o botão “Inserir”.

No evento criado, digite o seguinte código.

try {
Class.forName(“com.mysql.jdbc.Driver”);
conn = DriverManager.getConnection(“jdbc:mysql://localhost/dbaula4”,
“root”, “123”);
stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE);
String sql = “INSERT INTO cursoVALUES(‘”
+ txtSigla.getText() + “’,’”
+ txtNome.getText() + “’,’”
+ txtDesc.getText() + “’)”;
JOptionPane.showMessageDialog(null, sql);
int i = 0;
i = stmt.executeUpdate(sql);//executando o comando sql

23
Unidade: Eventos, Aplicativos com Banco de Dados e Organização de Componentes de Layouts

stmt.close();
if (i > 0) {
JOptionPane.showMessageDialog(null, “Curso cadastrado com sucesso!”);
abreTabela();
}
} catch (ClassNotFoundException e) {
System.out.println(e);
} catch (SQLException e) {
System.out.println(e);
}

Vamos à explicação do código


• Linha 187 – Esse comando registra a Classe do Driver JDBC;

• Linha 188 – Cria um objeto de conexão, passando como parâmetros o endereço, usuário
e senha do banco de dados;

• Linha 190 – Cria um objeto Statement e é por meio desse objeto que iremos executar
operações no banco de dados;

• Linha 192 – Atribui uma instrução SQL a uma variável string;

• Linha 196 – Para fins didáticos, exibimos o conteúdo da variável string (sql) em um
JOptionPane;

• Linha 198 – Executa instrução SQL e atribui resultado a uma variável int;

• Linha 202 – Se i for maior que zero, significa que a instrução SQL foi executada com
corretamente, assim é exibida uma mensagem de sucesso;

• Linha 206 – Caso ocorra alguma exceção, o sistema exibe o erro.

24
Passo 6
Crie um método void chamado atualiza_campos. E digite o seguinte código:

public void atualiza_campos() {


try {
txtSigla.setText(“” + rs.getString(“sigla”));
txtNome.setText(“” + rs.getString(“Nome”));//
txtDesc.setText(“” + rs.getString(“descricao”));
} catch (SQLException e) {
System.out.println(e);
}
}

Vamos à explicação do código


• Linhas 328 a 330 – Atribui aos campos os valores contidos na variável ResultSet. Note que
é passado como parâmetro do método getString o nome da coluna na qual desejamos
obter o valor.

Passo 7
Crie um método void chamado abrirTabela. E digite o seguinte código:

String query1 = “Select * from curso”;


try {
Class.forName(“com.mysql.jdbc.Driver”);
conn = DriverManager.getConnection(“jdbc:mysql://localhost/dbaula4”,
“root”, “123”);
stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_READ_ONLY);
rs = stmt.executeQuery(query1);//executando o comando sql

25
Unidade: Eventos, Aplicativos com Banco de Dados e Organização de Componentes de Layouts

rs.first();//estamos movendo o cursor para o primeiro registro pesquisado


atualiza_campos();
//conteudo da coluna sigla
} catch (ClassNotFoundException e) {
System.out.println(e);
} catch (SQLException e) {
System.out.println(e);
}

Vamos à explicação do código


• Linha 352 – Atribui uma instrução SQL (seleção) a uma variável string;

• Linha 344 – Esse comando registra a Classe do Driver JDBC;

• Linha 345 – Cria um objeto de conexão passando como parâmetros o endereço, usuário
e senha do banco de dados;

• Linha 347 – Cria um objeto Statement e é por meio desse objeto que iremos executar
operações no banco de dados;

• Linha 349 – Executa comando Statement que recebe como parâmetro a instrução SQL e
atribui o resultado a uma variável do tipo ResultSet;

• Linha 350 – Executa comando que posiciona o resultado no primeiro registro retornado
da seleção da tabela curso;

• Linha 351 – Chama método atualiza_campos para exibir o resultado de nossa instrução
SQL nos campos de nossa interface gráfica.

26
Passo 8
Crie um método para o botão “Deletar” e digite o seguinte código:

String query1 = “DELETE FROM curso WHERE(sigla=”;


String a = txtSigla.getText();
try {
Class.forName(“com.mysql.jdbc.Driver”);
conn = DriverManager.getConnection(“jdbc:mysql://localhost/dbaula4”,
“root”, “123”);
stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE);
String sql = query1 + “’” + txtSigla.getText() + “’)”;
JOptionPane.showMessageDialog(null, sql);
int i = 0;
i = stmt.executeUpdate(sql);//executando o comando sql

stmt.close();

if (i > 0) {
JOptionPane.showMessageDialog(null, “Curso deletado com sucesso!”);

// limpando campos
txtSigla.setText(“”);
txtNome.setText(“”);
txtDesc.setText(“”);

abreTabela();

}
} catch (ClassNotFoundException e) {
System.out.println(e);
} catch (SQLException e) {
System.out.println(e);
}

27
Unidade: Eventos, Aplicativos com Banco de Dados e Organização de Componentes de Layouts

Vamos à explicação do código


• Linha 210 - Atribui uma instrução SQL (seleção) a uma variável string;

• Linha 211 – Atribui valor do campo Sigla para uma variável string;

• Linha 213 – Registra a Classe do Driver JDBC;

• Linha 214 – Cria um objeto de conexão passando como parâmetros o endereço, usuário
e senha do banco de dados;

• Linha 215 – Cria um objeto Statement e é por meio desse objeto que iremos executar
operações no banco de dados;

• Linha 217 – Implementa instrução SQL e atribui o resultado a uma variável string;

• Linha 218 – Para fins didáticos, exibimos o conteúdo da variável string (sql) em um
JOptionPane;

• Linha 220 – Executa instrução SQL e atribui resultado a uma variável int.

Passo 9
Crie um evento ActionPerformed para o botão “Atualizar” e digite o seguinte código:

28
String query1 = “UPDATE curso SET sigla=”;
String a = txtSigla.getText();
try {
Class.forName(“com.mysql.jdbc.Driver”);
conn = DriverManager.getConnection(“jdbc:mysql://localhost/dbaula4”, “root”, “123”);
stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE);
String sql = query1 + “’” + txtSigla.getText() + “’,”
+ “nome=’” + txtNome.getText() + “’,”
+ “descricao=’” + txtDesc.getText()
+ “’ where sigla=” + “’” + txtSigla.getText() + “’”;
JOptionPane.showMessageDialog(null, sql);
int i = 0;
i = stmt.executeUpdate(sql);//executando o comando sql
int y = 0;
stmt.close();
y = stmt.CLOSE_CURRENT_RESULT;
if (i > 0) {
JOptionPane.showMessageDialog(null, “Curso alterado com sucesso!”);
abreTabela();
}
} catch (ClassNotFoundException e) {
System.out.println(e);
} catch (SQLException e) {
System.out.println(e);
}

29
Unidade: Eventos, Aplicativos com Banco de Dados e Organização de Componentes de Layouts

Vamos à explicação do código


• 243 – Atribui uma instrução SQL (seleção) a uma variável string;

• 244 – Atribui valor do campo Sigla para uma variável string;

• 246 – Registra a Classe do Driver JDBC;

• 247 – Cria um objeto de conexão passando como parâmetros o endereço, usuário e


senha do banco de dados;

• 248 – Cria um objeto Statement e é por meio desse objeto que iremos executar operações
no banco de dados;

• 250 – Implementa instrução SQL e atribui o resultado a uma variável string;

• 254 – Para fins didáticos, exibimos o conteúdo da variável string (sql) em um JOptionPane;

• 256 – Executa instrução SQL e atribui resultado a uma variável int.

Passo 10
Crie um evento ActionPerformed para o botão “Limpar Campos” e digite o seguinte código:

txtSigla.setText(“”);
txtNome.setText(“”);
txtDesc.setText(“”);

Esse código é simples; aqui, estamos atribuindo uma string vazia para a propriedade setText
dos campos textos de nossa aplicação.

Navegação entre Registros


Para navegar entre registros de nossa tabela Curso, usaremos os métodos first, last, next e
previous de nosso objeto ResultSet.

30
Passo 10
Crie um evento ActionPerformed para o botão “Primeiro” e digite o seguinte código:

try {
rs.first();
atualiza_campos();
} catch (SQLException e) {
System.out.println(e);
}

Vamos à explicação do código


• 278 – Executa o método first do objeto rs;

• 279 – Chama o método atualiza_campos;

• 281 – Caso ocorra alguma exceção, o sistema exibe o erro.

Passo 11
Crie um evento ActionPerformed para o botão “Anterior” e digite o seguinte código:

try {
rs.previous();
atualiza_campos();
} catch (SQLException e) {
System.out.println(e);
}

31
Unidade: Eventos, Aplicativos com Banco de Dados e Organização de Componentes de Layouts

Vamos à explicação do código


• 311 – Executa o método previous do objeto rs;

• 312 – Chama o método atualiza_campos;

• 314 – Caso ocorra alguma exceção, o sistema exibe o erro.

Passo 12
Crie um evento ActionPerformed para o botão “Próximo” e digite o seguinte código:

try {
rs.next();
atualiza_campos();
} catch (SQLException e) {
System.out.println(e);
}

Vamos à explicação do código


• 300 – Executa o método next do objeto rs.

• 301 – Chama o método atualiza_campos.

• 303 – Caso ocorra alguma exceção, o sistema exibe o erro.

32
Passo 13
Crie um evento ActionPerformed para o botão “Último” e digite o seguinte código:

try {
rs.last();
atualiza_campos();
} catch (SQLException e) {
System.out.println(e);
}

Vamos à explicação do código


• 289 – Executa o método last do objeto rs;

• 290 – Chama o método atualiza_campos;

• 292 – Caso ocorra alguma exceção, o sistema exibe o erro.

Passo 14
Clique com o botão direito do mouse sobre uma área vazia do form e selecione Evento/
Window / windowOpened.

33
Unidade: Eventos, Aplicativos com Banco de Dados e Organização de Componentes de Layouts

No método criado digite o seguinte código.

abreTabela();

Vamos Testar!
Pressione Shift + F11 ou clique no menu Executar/ Limpar e Construir Projeto.

Em seguida, pressione F6 ou clique no menu Executar/ Executar Projeto.

34
Digite os Campos e clique em Inserir.

Agora, cadastre outros cursos, teste os botões Deletar e Atualizar. Com mais de um registro
em nossa tabela, poderemos testar os botões de navegação entre os registros (Primeiro, Anterior,
Próximo e Último).

Nota
Lembre-se sempre de que para nossa aplicação rodar com sucesso, o serviço de banco de
dados deve estar rodando.

35
Unidade: Eventos, Aplicativos com Banco de Dados e Organização de Componentes de Layouts

Material Complementar

Nesta Unidade, vimos as operações básicas ofertadas pelo JDBC. Podemos nos aprofundar
mais no assunto no site da própria Oracle, na ferramenta Java, e ver os comandos de manipulação
de dados.
Quanto ao banco de dados, tanto o Oracle, Mysql, SQLServer, entre outros, todos usam o
SQL padrão; portanto, qualquer site oficial destas ferramentas dará o suporte necessário para
nossas aplicações.
A seguir, os links das principais dicas das ferramentas:

Explore

http://www.oracle.com/br/products/database/overview/index.html;
http://www.oracle.com/br/products/mysql/index.html;
http://www.sqlserverdicas.com/.

36
Referências

Aplicação Java
https://mega.co.nz/#!oBI2yYyI!hwAhxr70CXHHtyV0SgO_IkbwqIV1v164Y5xOFahXHxA

Ferramenta para criar tabela MySQL


https://mega.co.nz/#!oJ5XXJIK!xxG_wsDhVDh_VnQdbN6TYNkYLX3K5QZjPMWuBP7b4jY

Servidor de Banco de dados


https://mega.co.nz/#!8BY1kYSY!20GhxcXLB7pIvATvr299tuPXDTpTCcZvr8ohyCVHP9o

37
Unidade: Eventos, Aplicativos com Banco de Dados e Organização de Componentes de Layouts

Anotações

38

Você também pode gostar