Criando uma Aplicação Java com Swing e Conectando a um Banco de Dados MySQL

Bem vindos, nesse tutorial mostro uma pequena aplicação em java,  cadastro de clientes; estaremos implementando a interface da nossa aplicação e inserindo a codificação para conexão com o banco de dados MySQL.

O ambiente de desenvolvimento que estou utilizando é Ubuntu 13.10 Linux, IDE Eclipse, LAMP SERVER. “Ressaltando que da mesma forma que será abordado aqui pode ser utilizado em um ambiente Windows, IDE Eclipse, WAMP SERVER, ou outras configurações semelhantes”.

Passo 1: Configurando O Projeto

Baixe o JDBC DRIVER para MySQL (Conector/J),  MySQL fornece drives baseados em padrões para JDBC, ODBC. Permite aos Desenvolvedores construir aplicações com banco de dados em sua linguagem de escolha (ou seja faz a conexão da aplicação como o banco de dados).
Feito Isso, abra a sua IDE, crie um projeto com o nome “CadastroCliente”, crie um pacote com o nome “Aplicacao”.
Crie uma pasta com o nome libs, nela sera colocador o “mysql-connector-java-3.0.14-production-bin.jar” que você deve baixar no link informado anteriormente.

File/New/Folder…

1

2

Criada a pasta libs, copie e cole o arquivo.jar que foi baixado, para dentro da pasta libs.

Agora clique com o botão direito em cima do projeto, Build Path/Configure Build Path…

3

Na janela que foi aberta, clique em Add JARs…

4

Na janela que foi aberta, selecione o projeto CadastroCliente/libs/arqivo.jar que foi adicionado anteriomente.

5

Ficara da seguinte forma:

6

Ou seja, o arquivo.jar, está corretamente referenciado dentro da biblioteca e pronto para ser utilizado.

Agora implemente as interface da aplicação, logicamente espero que você já deve ter instalado na sua IDE (WindowBuilder) que permite criar a interface com utilizando Swing Designer. Caso não tenha, deve está conectado a internet, Help/Install New Software… 9

Na janela que será aberta em Work with, em adicionar informe a seguinte URL:

http://dl.google.com/eclipse/inst/d2wbpro/latest/4.2

e o respectivo nome: WindowBuilder, selecione todos as opções disponíveis e instale.

Passo 2: Implementando a Interface CadastroCliente

Agora dentro do pacote “Aplicacao” crie uma class da seguinte forma:
File/New/Other… ou (Ctrl+N)

7

Selecione JFrame, e nomeie com nome de “CadastroCliente”.

8

Utilizando Palette implemente a interface da class “CadastroCliente”:

face1

É de muita importância que você utilize as boas praticas da programação e renomeie todos os componente da interface que foi construída.

Ideal que utilize com os seguintes nomes:

private JPanel contentPane;
private JTextField entCodigo;
private JTextField entNome;
private JTextField entLogradouro;
private JTextField entBairro;
private JTextField entCidade;
private JTextField entNumero;
private JFormattedTextField entCPF;
private JFormattedTextField entTelefone;
private JTextField entEstado;
private JButton btnInserir;
private JButton btnLimpar;
private JButton btnBusca;

caso não queira devera alterar também nos métodos que serão implementados.

Agora no final da class crie um método:

//Salva os dados no BD
public void InserirDados() {
try {
// * Drive Conector MySQL.
Class.forName("com.mysql.jdbc.Driver");

// * Conexão como BD.
Connection con = DriverManager.getConnection(
"jdbc:mysql://localhost/BDCadastro", "root", "210712");

// * Objeto comdo SQL.
Statement stmt = con.createStatement();

// * Pega os dados informado no formulário,
int cadMat = Integer.parseInt(entCodigo.getText());
String cadNome = entNome.getText();
String cadCPF = entCPF.getText();
String cadTelefone = entTelefone.getText();
String cadLogradouro = entLogradouro.getText();
int cadNumero = Integer.parseInt(entNumero.getText());
String cadBairro = entBairro.getText();
String cadCidade = entCidade.getText();
String cadEstado = entEstado.getText();

// * Insere os dados do formulário no BD.
stmt.executeUpdate("insert into TabFicha (Matricula, Nome, CPF, Telefone, Logradouro, Numero, Bairro, Cidade, Estado) values ('"
+ cadMat
+ "','"
+ cadNome
+ "','"
+ cadCPF
+ "','"
+ cadTelefone
+ "','"
+ cadLogradouro
+ "','"
+ cadNumero
+ "','"
+ cadBairro
+ "','"
+ cadCidade
+ "','"
+ cadEstado
+ "')");
JOptionPane.showMessageDialog(null, "Dados Salvos!");

limpaCampos();

// * Fecha a conexão do o DB.
con.close();

} catch (SQLException Erro) {
JOptionPane.showMessageDialog(null,
"Erro Cmdo SQL" + Erro.getMessage());

// Trata erros de conexão.
} catch (ClassNotFoundException Erro) {

JOptionPane.showMessageDialog(null, "Driver não encontrado!");

}
}

Adicione o evento actionPerformed, no botão Inserir, e chame o método InserirDados. Não esqueça de fazer os import corretamente.

Abaixo do método Inserir dados crie o método:

//Este Metodo Limpa os campos
public void limpaCampos() {
entCodigo.setText("");
entNome.setText("");
entCPF.setText("");
entTelefone.setText("");
entLogradouro.setText("");
entNumero.setText("");
entBairro.setText("");
entCidade.setText("");
}

No botão Limpar, adicione o evento actionPerformed e chame o método limparCampos.

No botão Busca adicione o evento actionPerformed e quando criar a class “Busca” adicione o seguinte código:

//Cria e Instancia o objeto da class Busca
Busca b = new Busca();
//JFrame visivel
b.setVisible(true);

Passo 3: Implementando a Interface Busca

Crie uma nova class como o nome de “Busca” e implemente a Interface a seguir:

face2

Os campos devem ficar normalmente desativados.
As opções no ComboBox são: Opção da Busca, Código, CPF, Todos.
Ideal que utilize com os seguintes nomes nos componentes:

private JPanel contentPane;
private JTextField saidaCodigo;
private JTextField saidaNome;
private JTextField saidaLogradouro;
private JTextField saidaNumero;
private JTextField saidaBairro;
private JTextField saidaEstado;
private JTextField saidaCidade;
private JFormattedTextField saidaCPF;
private JFormattedTextField saidaTelefone;
private JFormattedTextField entBusca;
private JComboBox opcaoBusca;
private JButton btnExcluir;
private JButton btnAlterar;
private JButton btnLimpar;

No final da class crie os seguintes métodos:

//Limpa os Campos
public void limpar() {
entBusca.setText("");
saidaCodigo.setText("");
saidaNome.setText("");
saidaCPF.setText("");
saidaTelefone.setText("");
saidaLogradouro.setText("");
saidaNumero.setText("");
saidaBairro.setText("");
saidaCidade.setText("");
saidaEstado.setText("");
}
//Fecha a Janela
public static void sair() {
// frame.setVisible(false);
// Comando para fecha Janela.
frame.dispose();
}
//Ativa os campos
public void ativarCampos() {
entBusca.setEnabled(true);
saidaCodigo.setEnabled(true);
saidaNome.setEnabled(true);
saidaCPF.setEnabled(true);
saidaTelefone.setEnabled(true);
saidaLogradouro.setEnabled(true);
saidaNumero.setEnabled(true);
saidaBairro.setEnabled(true);
saidaCidade.setEnabled(true);
saidaEstado.setEnabled(true);
}
//Busca os dados no BD
public void BuscaDados() {
boolean consulta = true;

try {
// * Driver conector MySQL.
Class.forName("com.mysql.jdbc.Driver");

// * Conexão BD
Connection con = DriverManager.getConnection(
"jdbc:mysql://localhost/BDCadastro", "root", "210712");

Statement stmt = con.createStatement();

// * Entras de dados no campo codigo do formulário.
int BuscaCodigo = Integer.parseInt(entBusca.getText());
String BuscaCPF = entBusca.getText();

ResultSet RS = null;

// Escolha a Opção de Busca.
if (opcaoBusca.getSelectedIndex() == 0) {
JOptionPane.showMessageDialog(null,
"Escolha uma Opção de Busca!");

} else if (opcaoBusca.getSelectedIndex() == 1) {
RS = stmt
.executeQuery("Select * from TabFicha where Matricula = "
+ BuscaCodigo);

while (RS.next()) {

// * Exibe os valore retornados na consulta.

// * Pega a Matricula.
int Mat = RS.getInt("Matricula");

// * Conver inteiro para String
saidaCodigo.setText(String.valueOf(Mat));

// Pega os demais.
saidaNome.setText(RS.getString("Nome"));
saidaCPF.setText(RS.getString("CPF"));
saidaTelefone.setText(RS.getString("Telefone"));
saidaLogradouro.setText(RS.getString("Logradouro"));
saidaNumero.setText(RS.getString("Numero"));
saidaBairro.setText(RS.getString("Bairro"));
saidaCidade.setText(RS.getString("Cidade"));
saidaEstado.setText(RS.getString("Estado"));

consulta = false;
JOptionPane.showMessageDialog(null, "Dados Encontrado!");

}

} else if (opcaoBusca.getSelectedIndex() == 2) {
RS = stmt.executeQuery("Select * from TabFicha where CPF = "
+ BuscaCPF);

while (RS.next()) {

// * Pega o CPF.
String CPF = RS.getString("CPF");
saidaCPF.setText(CPF);

// * Exibe os valore retornados na consulta.
saidaNome.setText(RS.getString("Nome"));
saidaCodigo.setText(RS.getString("Matricula"));
saidaTelefone.setText(RS.getString("Telefone"));
saidaLogradouro.setText(RS.getString("Logradouro"));
saidaNumero.setText(RS.getString("Numero"));
saidaBairro.setText(RS.getString("Bairro"));
saidaCidade.setText(RS.getString("Cidade"));
saidaEstado.setText(RS.getString("Estado"));

consulta = false;
JOptionPane.showMessageDialog(null, "Dados Encontrado!");

}

}

if (consulta) {
JOptionPane.showMessageDialog(null, "Dados não Encontrados!");

}
RS.close();
stmt.close();

// * Fecha conexão com DB.
con.close();

} catch (SQLException Erro) {
JOptionPane.showMessageDialog(null,
"Erro Cmdo SQL" + Erro.getMessage());

} catch (ClassNotFoundException Erro) {
JOptionPane.showMessageDialog(null, "Driver não Encontrado!");

}
}
//Altera os dados no BD
public void AlterarDados() {
try {
// * Drive Conector MySQL.
Class.forName("com.mysql.jdbc.Driver");

// * Conexão como BD.
Connection con = DriverManager.getConnection(
"jdbc:mysql://localhost/BDCadastro", "root", "210712");

// * Objeto comdo SQL.
Statement stmt = con.createStatement();

// * Opção de Entrada para Alterar.
int consMatricula = Integer.parseInt(entBusca.getText());
String consCPF = entBusca.getText();

// * Pega os dados no formulário.
int cadMat = Integer.parseInt(saidaCodigo.getText());
String cadNome = saidaNome.getText();
String cadCPF = saidaCPF.getText();
String cadTelefone = saidaTelefone.getText();
String cadLogradouro = saidaLogradouro.getText();
int cadNumero = Integer.parseInt(saidaNumero.getText());
String cadBairro = saidaBairro.getText();
String cadCidade = saidaCidade.getText();
String cadEstado = saidaEstado.getText();

// Escolha a Opção de Busca.
if (opcaoBusca.getSelectedIndex() == 1) {
int registro = stmt.executeUpdate("update TabFicha set "
+ "Nome='" + cadNome + "',CPF='" + cadCPF
+ "',Telefone='" + cadTelefone + "',Logradouro='"
+ cadLogradouro + "',Numero='" + cadNumero
+ "',Bairro='" + cadBairro + "',Cidade='" + cadCidade
+ "',Estado='" + cadEstado + "', Matricula=" + cadMat
+ " where Matricula=" + consMatricula);

if (registro != 0)
JOptionPane.showMessageDialog(null, "Dados Alterados!");

else
JOptionPane.showMessageDialog(null, "Dados Não Alterados!");
stmt.close();

// * Fecha conexão com BD.
con.close();

} else if (opcaoBusca.getSelectedIndex() == 2) {
int registro = stmt.executeUpdate("update TabFicha set "
+ "Matricula='" + cadMat + "',Nome='" + cadNome
+ "',Telefone='" + cadTelefone + "',Logradouro='"
+ cadLogradouro + "',Numero='" + cadNumero
+ "',Bairro='" + cadBairro + "',Cidade='" + cadCidade
+ "',Estado='" + cadEstado + "',CPF=" + cadCPF
+ "where CPF=" + consCPF);

if (registro != 0)
JOptionPane.showMessageDialog(null, "Dados Alterados!");

else
JOptionPane.showMessageDialog(null, "Dados NãoAlterados!");
stmt.close();

// * Fecha conexão com BD.
con.close();
}

} catch (SQLException Erro) {
JOptionPane.showMessageDialog(null,
"Erro Cmdo SQL" + Erro.getMessage());

} catch (ClassNotFoundException e) {
JOptionPane.showMessageDialog(null, "Driver não encontrado");
}
}
//Exclui dados no BD
public void ExcluirDados() {
try {
// * Drive Conector MySQL.
Class.forName("com.mysql.jdbc.Driver");

// * Conexão como BD.
Connection con = DriverManager.getConnection(
"jdbc:mysql://localhost/BDCadastro", "root", "210712");

// * Objeto comdo SQL.
Statement stmt = con.createStatement();

int excluirMatricula = Integer.parseInt(entBusca.getText());
int registro = stmt
.executeUpdate("delete from TabFicha where Matricula="
+ excluirMatricula);

if (registro != 0) {
JOptionPane.showMessageDialog(null, "Dados Excluídos!");
limpar();

} else {
JOptionPane.showMessageDialog(null, "Dados não Excluídos!");
}
stmt.close();

// * Limpar a caixa de Texto.
limpar();

// * Fecha conexão com o BD.
con.close();

} catch (SQLException Erro) {
JOptionPane.showMessageDialog(null,
"Erro Cmdo SQL" + Erro.getMessage());

} catch (ClassNotFoundException Erro) {
JOptionPane.showMessageDialog(null, "Driver não Encontrado!");

}
}

Adicione o evento actionPerformed no Botão “Buscar” e chame os métodos:

ativarCampos();
BuscaDados();

Adicione o evento actionPerformed no Botão “Sair” e chame o método:

sair();

Adicione o evento actionPerformed no Botão “Limpar” e chame o método:

limpar();

Adicione o evento actionPerformed no Botão “Alterar” e chame o método:

AlterarDados();

Adicione o evento actionPerformed no ComboBox “opcaoBusca” e adicione o seguinte código:

//Escolhe a Forma (tipo) da Busca
if (opcaoBusca.getSelectedIndex() == 1) {
limpar();
entBusca.enable(true);

}
if (opcaoBusca.getSelectedIndex() == 2) {
limpar();

} else if (opcaoBusca.getSelectedIndex() == 3) {
BuscaModificada busca = new BuscaModificada();
busca.setVisible(true);
limpar();
}

Passo 4: Implementando a class “BuscaModificada”

Crie uma nova class com o nome “BuscaModificada” e implemente  a interface a seguir:

face3

Agora no final da class implemente os seguintes métodos:

// Busca dados no BD
public void BuscaDados() {
boolean consulta = true;
try {
Class.forName("com.mysql.jdbc.Driver");

Connection con = DriverManager.getConnection(
"jdbc:mysql://localhost/BDCadastro", "root", "210712");

Statement stmt = con.createStatement();
ResultSet RS;

if (!entBusca.getText().equals("")) {
int consMatricula = Integer.parseInt(entBusca.getText());
RS = stmt
.executeQuery("Select * from TabFicha where Matricula="
+ consMatricula);

} else {
RS = stmt.executeQuery("Select * from TabFicha");

}

DefaultTableModel modelo = new DefaultTableModel();
modelo.addColumn("Codigo");
modelo.addColumn("Nome");
modelo.addColumn("CPF");
modelo.addColumn("Telefone");
modelo.addColumn("Logradouro");
modelo.addColumn("Numero");
modelo.addColumn("Bairro");
modelo.addColumn("Cidade");
modelo.addColumn("Estado");

while (RS.next()) {
int Mat = RS.getInt("Matricula");

modelo.addRow(new Object[] { String.valueOf(Mat),
RS.getString("Nome"), RS.getString("CPF"),
RS.getString("Telefone"), RS.getString("Logradouro"),
RS.getString("Numero"), RS.getString("Bairro"),
RS.getString("Cidade"), RS.getString("Estado") });
consulta = false;

}

tabela.setModel(modelo);

if (consulta) {
JOptionPane.showMessageDialog(null, "Dados Não Encontrados!");

} else {
JOptionPane.showMessageDialog(null, "Dados Encontrado!");

}

RS.close();
stmt.close();
con.close();

} catch (SQLException Erro) {
JOptionPane.showMessageDialog(null,
"Erro Cmdo SQL" + Erro.getMessage());

} catch (Exception Erro) {
JOptionPane.showMessageDialog(null, "Driver nãio Encontrado!");
}
}

Lembre-se dos nomes dos componentes:

private JPanel contentPane;
private JTextField entBusca;
private JTable tabela;
private JButton btnBuscar;

Adicione o evento actionPerformed no Botão “Buscar” e chame o método:

BuscaDados();

OK, agora já temos nossa aplicação pronta lembre-se que você deve ter mudado as seguintes informações em todas as class:

Connection con = DriverManager.getConnection(
"jdbc:mysql://localhost/BDCadastro", "root", "210712");

210712: é a senha do seu banco então lembre-se de alterar, caso você não tenha senha deixe em branco.

Passo 5: Configuração do BD
Você já deve ter instalado o servido local no seu computado, baixe o arquivo.sql, crie um banco com o nome de “BDCadastro”;

bd1

Importe o arquivo.sql;

bd2

Pronto o banco foi criado com sucesso.

bd3

Projeto + SQL

É isso ai, espero que gostem, envie sua sugestão, o que você gostaria que mostra-se aqui no Clube dos Geeks?

Até a próxima.

Francisco de Assis

Servo de DEUS, Mestrando em Ciências da Computação (UFPE) Pós-Graduado em Docência do Ensino Superior (IDJ/UVA), Graduando em Automação Industrial (IFCE), Graduado em Analise e Desenvolvimento de Sistemas (UNILEÃO), casado com a mulher mais maravilhosa, Tamires Alencar e amante Python, Java, Games, Eletrônica, Robótica, Violão, Aviação...

Você pode gostar...

27 Resultados

  1. Parabens cara muito bom tutorial!

  2. Bruno disse:

    Cara … aquele primeiro link pra baixar o JDBC é pra baixar o installer e não o jar.
    É burrice minha ou ta errado?

    • É para baixar o driver .jar, ele é o driver responsável pela conecção da aplicação ao banco.
      Na pagina que vai abrir do link que você falou baixe o arquivo ODBC Driver for MySQL (Connector/ODBC) e coloque na sua aplicação. Qualquer coisa é só chamar. vlw.

  3. cristiano disse:

    como isso fica assim private JComboBox opcaoBusca = new JComboBox();

  4. Obrigado Cristiano boa observação!
    Fica somente: private JComboBox opcaoBusca;
    Vlw

  5. filipe disse:

    Amigo, tenho uma aplicação semelhante, a unica coisa que muda é a conexão do banco, que é com um banco de dados remoto, ou seja, está na internet. consigo me conectar com ele, o problema é que fica muito lento, qualquer coisa q faz nele, usando um banco local demora 2 ou 3 segundos, mas com o banco online demora de 15 a 30 segundos. você saberia me dizer oque pode estar acontecendo? Agradeço desde já.

  6. Luiz disse:

    Você não disponibilizou o arquivo completo do aplicativo ou eu não achei mesmo? O projeto está muito bom. Parabéns.

  7. Maycon Douglas Oliveira da Silva disse:

    Eu Sinceramente gostaria de te agradecer meu amigo , muito obrigado por sua ajuda, me ajudou bastante aqui em um trabalho da Facul.. valeu

  8. Joao disse:

    O link pra download está quebrado, ainda posso encontrar o projeto em algum lugar ?

  9. Fábio Marques disse:

    Amigo teria como disponibilizar o código outra vez, é que o link está quebrado. Eu agradeceria muito!

  10. Sergio disse:

    Ótimo artigo. Parabéns!

  11. Mateus disse:

    O link não está funcionando.

  12. Caroline disse:

    o link ta quebrado de novo

  13. Raquel disse:

    Olá,
    Não teria um link ativo para download do projeto? Esse não está ativo.
    Obrigada.

  14. Anonymous disse:

    Arquivo está offline novamente!

  15. Andre disse:

    Parabéns pela dedicação em explicar e disponibilizar este projeto, o download não esta mais disponível, você poderia disponibilizar novamente

  16. Eduarda disse:

    Boa Tarde Francisco,

    Tem como disponibilizar esse arquivo?

  17. Daniel Faria disse:

    Olá, teria como disponibilizar o link? O download do mega está quebrado.

  18. Thiago disse:

    Muito bom!!!!

    Só o link do SQL que não aparece!!!

    Tem como disponibilizar???!!!

  19. willye disse:

    O link pra download está indisponivel, ainda posso encontrar o projeto em algum lugar ?

  20. Lucas disse:

    onde eu acho esse arquivo.sql pra importar devo criar as tabelas no canco de dados

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *