0% acharam este documento útil (0 voto)
9 visualizações21 páginas

Banco de Dados - Contectando MSQL (Banco de Dados) Com Java, Usando Eclipse (PARTE 1)

Enviado por

Ricardo Chaves
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
9 visualizações21 páginas

Banco de Dados - Contectando MSQL (Banco de Dados) Com Java, Usando Eclipse (PARTE 1)

Enviado por

Ricardo Chaves
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
Você está na página 1/ 21

2️⃣

Conectando o Banco de Dados


in Java
Atividade

Aula 05/09

Usando o “Netbeans” você vai criar um projeto com “java1.8” e inserir o drive:

1. Download this file and “desconpacte”

bibliotecadoprojeto.zip
https://drive.google.com/file/d/1lygezPEnOSOw3a3lEwtxzpacohFk0-HG/view?usp=sharing

2. Procure o pacote “Library” e clique no botão direito:

botão direito em library → properties → (+) Classpath →


Add JAR/Folder → (procure o arquivo) selecione o arquivo
(não seleciona a pasta, mas o arquivo dentro dela)

Banco de Dados
1. Crie o banco de dados “bb_estacionamento” com o escript abaixo:

SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;


SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INV

CREATE SCHEMA IF NOT EXISTS `bb_estacionamento` DEFAULT CHARA

Conectando o Banco de Dados in Java 1


CREATE TABLE IF NOT EXISTS `bb_estacionamento`.`cliente` (
`IdCodigo` INT(11) NOT NULL AUTO_INCREMENT,
`Cpf` VARCHAR(255) NULL DEFAULT NULL,
`DataNascimento` VARCHAR(10) NULL DEFAULT NULL,
`Nome` VARCHAR(255) NULL DEFAULT NULL,
PRIMARY KEY (`IdCodigo`))
ENGINE = InnoDB
AUTO_INCREMENT = 217
DEFAULT CHARACTER SET = utf8;

CREATE TABLE IF NOT EXISTS `bb_estacionamento`.`estacionament


`IdEstacionamento` INT(11) NOT NULL AUTO_INCREMENT,
`DataEntrada` VARCHAR(20) NULL DEFAULT NULL,
`DataSaida` VARCHAR(20) NULL DEFAULT NULL,
`HoraDeEntrada` VARCHAR(255) NULL DEFAULT NULL,
`HoraSaida` VARCHAR(255) NULL DEFAULT NULL,
`patio_IdPatio` INT(11) NULL DEFAULT NULL,
`veiculo_idVeiculo` INT(11) NULL DEFAULT NULL,
PRIMARY KEY (`IdEstacionamento`),
INDEX `FK_9h56hy0p4xunonjwj8hbgnoc8` (`patio_IdPatio` ASC),
INDEX `FK_rq27ascpbd1f6hnr7103h9e0h` (`veiculo_idVeiculo` A
CONSTRAINT `FK_9h56hy0p4xunonjwj8hbgnoc8`
FOREIGN KEY (`patio_IdPatio`)
REFERENCES `bb_estacionamento`.`patio` (`IdPatio`),
CONSTRAINT `FK_rq27ascpbd1f6hnr7103h9e0h`
FOREIGN KEY (`veiculo_idVeiculo`)
REFERENCES `bb_estacionamento`.`veiculo` (`idVeiculo`))
ENGINE = InnoDB
AUTO_INCREMENT = 2
DEFAULT CHARACTER SET = utf8;

CREATE TABLE IF NOT EXISTS `bb_estacionamento`.`modelo` (


`IdModelo` INT(11) NOT NULL AUTO_INCREMENT,
`Descricao` VARCHAR(255) NULL DEFAULT NULL,
PRIMARY KEY (`IdModelo`))
ENGINE = InnoDB

Conectando o Banco de Dados in Java 2


AUTO_INCREMENT = 22
DEFAULT CHARACTER SET = utf8;

CREATE TABLE IF NOT EXISTS `bb_estacionamento`.`patio` (


`IdPatio` INT(11) NOT NULL AUTO_INCREMENT,
`Capacidade` VARCHAR(255) NULL DEFAULT NULL,
`Endereco` VARCHAR(255) NULL DEFAULT NULL,
PRIMARY KEY (`IdPatio`))
ENGINE = InnoDB
AUTO_INCREMENT = 4
DEFAULT CHARACTER SET = utf8;

CREATE TABLE IF NOT EXISTS `bb_estacionamento`.`veiculo` (


`idVeiculo` INT(11) NOT NULL AUTO_INCREMENT,
`Ano` VARCHAR(255) NULL DEFAULT NULL,
`Cor` VARCHAR(255) NULL DEFAULT NULL,
`placa` VARCHAR(255) NULL DEFAULT NULL,
`cliente_IdCodigo` INT(11) NULL DEFAULT NULL,
`modelo_IdModelo` INT(11) NULL DEFAULT NULL,
PRIMARY KEY (`idVeiculo`),
INDEX `FK_rqn8g29b45nj4xyb4uvqeuft8` (`cliente_IdCodigo` AS
INDEX `FK_sh01qa1mrtm7ji1nai92n0l9c` (`modelo_IdModelo` ASC
CONSTRAINT `FK_rqn8g29b45nj4xyb4uvqeuft8`
FOREIGN KEY (`cliente_IdCodigo`)
REFERENCES `bb_estacionamento`.`cliente` (`IdCodigo`),
CONSTRAINT `FK_sh01qa1mrtm7ji1nai92n0l9c`
FOREIGN KEY (`modelo_IdModelo`)
REFERENCES `bb_estacionamento`.`modelo` (`IdModelo`))
ENGINE = InnoDB
AUTO_INCREMENT = 6
DEFAULT CHARACTER SET = utf8;

SET SQL_MODE=@OLD_SQL_MODE;

Conectando o Banco de Dados in Java 3


SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;

🚨 Observações:

As tabelas devem ter a chave primária como AUTOINCREMENT

Não coloque os outros atributos como NOT NULL

Depois add o drive no seu projeto Java

👆(direito) projeto → propriedades → libraries →(+)classpath →”Add


JAR/Folder”

Depois crie os seguintes pacotes:

Conexao
Crie a classe “Conexao” e insira esse código:

package Conexao;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
/**
*
* @author alunoifto
*/
public class Conexao {

public Connection getConnection(){

try {

return DriverManager.getConnection("jdbc:mysql://loc
// return DriverManager.getConnection("jdbc:mysql:/
} catch (SQLException ex) {

Conectando o Banco de Dados in Java 4


throw new RuntimeException(ex);
}

}
PreparedStatement preparedStatement (String query){
throw new UnsupportedOperationException("Erro na con
}

Local onde será feito a conexão com o Banco de Dados

Descrição do código

return DriverManager.getConnection("jdbc:mysql://localhos
//return DriverManager.getConnection("jdbc:mysql://179.42

Linha 1: conexão com um banco de dados criado no seu MySQL


Workbeach

bb_estacionamento nome do banco de dados criado no MySQL


Workbeach

user=root nome do usuário do MySQL Workbeach

password=alunoifto senha do usuário do MySQL Workbeach

🚨 O usuário sempre vai ser “root”, mas a senha se diferencia


(senha do seu MySQL)

Linha 2: conexão com um banco de dados online

179.42.88.21 IP do local onde está inserido o Banco de Dados em


um Servidor Online

bb_estacionamento nome do banco de dados no servidor online

user=gilvan nome de usuário do usuário no Servidor Online

Conectando o Banco de Dados in Java 5


password=gilvan.prof.bd senha do usuário no Servidor Online

try{
[...]
}catch (SQLException ex) {
throw new RuntimeException(ex);
}

}
PreparedStatement preparedStatement (String query){
throw new UnsupportedOperationException("Erro na
}

Após você inserir, deletar, atualizar, conectar o banco de dados, se


algo dé errado o banco não irá funcionar, mas você não será avisado
do erro ou não mostrará onde o erro está

O “try catch” te permite você criar essas estruturas para te avisar em


caso de erro. Por exemplo:

PreparedStatement preparedStatement (String query){


throw new UnsupportedOperationException("Erro
}

Se dê erro na “conexão com o Banco de Dados” você será


informado com a mensagem “Erro na conexão com banco de
dados"
Controle
1. Após você criar o seu banco de dados no MySQL, você deve criar uma
“classe java“ para cada tabela criado no seu banco de dados.

2. Em cada classe, insira os atributos da tabela correspondente a classe.


Além dos métodos gets e sets

Conectando o Banco de Dados in Java 6


🚨 Os nomes dos atributos devem ser escritos da mesma forma que foi
no banco de dados para os atributos das tabelas. Assim evitará erros.

🚨 No caso de atributos do tipo “date”:

1. Clique na lâmpada

2. Click “Add import for ‘java.util.Date’”

Dao
Classe responsável por salvar, atualizar ou excluir os dados no formulário

1. Após você criar as classes do pacote controle, você deve criar uma “classe
java“ para cada tabela criado no seu banco de dados.

2. Em cada classe, insira esse código modelo:

As importações:

//IMPORTAÇÕES
import Conexao.Conexao;
import Controle.Modelo;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;

Conectando o Banco de Dados in Java 7


import java.util.logging.Logger;
import javax.swing.JOptionPane;

O código inicial:
Os nomes em amarelo devem ser alterados conforme o nome da
“classe Dao” que você criou. No código, a “classe Dao”criada era
“ModeloDao”, por isso temos esse nome no código.

public class ModeloDao {

private final Connection connection;


//criando a insrtância "connection"
public ModeloDao() {
this.connection = new ConexaoBancoDados().getConne
}

Método Salvar

// Método para salvar um modelo


public void Salvar(Modelo modelo) {

String sql = "Insert into modelo (descricao) va


try {
PreparedStatement pst = connection.prepareS
pst.setString(1, modelo.getDescricao());
pst.executeUpdate();
JOptionPane.showMessageDialog(null, "Dados
} catch (SQLException ex) {
Logger.getLogger(ModeloDao.class.getName())

}
}

varLinha 2: public void Salvar: criando o método Salvar

Conectando o Banco de Dados in Java 8


Linha 2: Modelo modelo: eu estou criando uma instância (modelo)
da classe Modelo

Linha 3: código SQL para inserir uma informação no atributo


“descricao” da tabela “modelo”. Ele finaliza com “?” porque o valor
será inserido a partir de outras class.

Linha 5: PreparedStatement pst eu estou criando uma instância


(pst) da classe PreparedStatement

Linha 5: connection.prepareStatement eu estou atribuindo a


instância (pst) o resultado do método “prepareStatement” que
recebe o argumento “sql”. Esse método é chamado pela instância
connection (encontrada no tópico “código inicial”)

Linha 6: “setString” set(chamando um método do tipo set) e String


(o atributo “descricao” é do tipo String”.

Linha 6: (1,…) é a posição do atributo na linha 3 - se o atributo


“descricao” foi o primeiro a ser especificado na linha 3, então você
coloca 1

Linha 6: (…, modelo.getDescricao) “modelo” é a instância criada


na linha 2 e “getDescricao” é o “método get” do atributo
“descricao” encontrado na classe “Modelo” (pacote Controle)

Linha 7: pst.executeUpdate(); executar a atualização

Linha 8: Após salvar os dados, é exibido a janela gráfica com a


mensagem “Dados gravado com sucesso!!”

Método Excluir

// Método para Excluír o modelo


public void Excluir(Modelo modelo) {
String sql = "Delete from modelo where IdModelo
try {
PreparedStatement pst = connection.prepareS
pst.setInt(1, modelo.getCodigoModelo());
pst.execute();
JOptionPane.showMessageDialog(null, "Exclus

Conectando o Banco de Dados in Java 9


pst.close();
} catch (SQLException ex) {
Logger.getLogger(ModeloDao.class.getName())
JOptionPane.showMessageDialog(null, "Erro a
}
}

[…] códigos semelhantes anteriormente explicado

Linha 8: pst.close() todas as vezes em que for criado métodos


para salvar, excluir e atualizar, você deve cololá-lo para finalizar
tudo.

📌 A ausência dessa linha vai tornar cada vez mais o banco


de dados lendo

📌 STOP

Método Update

//Método para Atualizar modelo

public void atualizar(Modelo modelo) {


String sql = "Update modelo set IdModelo=?, des
try {
PreparedStatement pst = connection.prepareS
pst.setInt(1, modelo.getCodigoModelo());
pst.setString(2, modelo.getDescricao());
pst.setInt(3, modelo.getCodigoModelo());

Conectando o Banco de Dados in Java 10


pst.executeUpdate();
JOptionPane.showMessageDialog(null, "Atuali
} catch (SQLException ex) {
Logger.getLogger(ModeloDao.class.getName())
}

[…] códigos semelhantes anteriormente explicado

Linha 7: “setInt” set(chamando um método do tipo set) e Int (o


atributo “CodigoModelo” é do tipo “Int”.

Linha 7: (3,…) é a posição do atributo na linha 2 - se o atributo


“idModelo” foi o terceiro a ser especificado na linha 2, então você
coloca 3

Linha 7: (…, modelo.getCodigoModelo) “modelo” é a instância


criada na linha 1 e “getCodigoModelo” é o “método get” do atributo
“CodigoModelo” encontrado na classe “Modelo” (pacote Controle)

Método Preencher Tabela

//Preencher Tabela

public List<Modelo> ListarModelo() {


List<Modelo> modeloTabela = new ArrayList<>();

String sql = "select IdModelo, Descricao from m


try {
PreparedStatement pst = connection.prepareS
ResultSet rs = pst.executeQuery();
while (rs.next()) {

Modelo modelo = new Modelo();


modelo.setCodigoModelo(rs.getInt("IdMod

Conectando o Banco de Dados in Java 11


modelo.setDescricao(rs.getString("Descr
modeloTabela.add(modelo);
}

} catch (SQLException ex) {


Logger.getLogger(ModeloDao.class.getName())
}
return modeloTabela;
}

Linha 1: o termo “Modelo” é o nome da classe encontrada no


pacote “Controle”

Linha 3: comando SQL

Linha 6: “Result set” traz o resultado ou informações que estão em


um banco, executando uma “Query”, pois é preciso o retorno de
dados

Linha 9 e 10: para cada atributo que voce está selecionando, você
deve linha uma linha neste padrão:

modelo.setCodigoModelo(rs.getInt("IdModelo"));

modelo.setDescricao(rs.getString("Descricao"));

Formulario
1. Para criar o formulário:

botão direito no pacote “Formulário” → new → JFrame Form

Os controles (caixas de texto, botões, etc) estão em Swing Controls


Ao selecionar um controle (ex: “text Field”) e arrastar para a área de criação do
formulário, na região inferior à direita você poderá alterar o formulário em
“Properties”. Essa aba tem outras dentro:

Conectando o Banco de Dados in Java 12


Properties: propriedades do formulário → text você altera o conteúdo
inserido em “text Field”

Code → Variavel Name você altera o nome da variável que receberá os


dados inseridos na caixa de texto (textField).

🚨 Voce deve criar duas caixas de texto, uma para receber o “Código do
Modelo” e outra para receber a “Descricao”

🚨 INCOMPLETO

2. Conectando o Formulário ao Banco de Dados

a. 👆2x na caixa de text (text Field)


b. Acima do comentário: “// Variables declaration - do not modify” que se
encontra no final ddo código, você insere esses outros códigos:

// Método para Salvar


public boolean salvarModelo() {
Modelo modelo = new Modelo();
modelo.setDescricao(txtDescicao.getText());
ModeloDao dao = new ModeloDao();
dao.Salvar(modelo);
return true;

}
// Método para Atualizar

public boolean atualizarModelo() {


Modelo modelo = new Modelo();
modelo.setCodigoModelo(Integer.parseInt(txtCodi
modelo.setDescricao(txtDescicao.getText
ModeloDao dao = new ModeloDao();
dao.atualizar(modelo);

Conectando o Banco de Dados in Java 13


return true;

public boolean ExcluirModelo() {


Modelo modelo = new Modelo();
modelo.setCodigoModelo(Integer.parseInt(txtCodi
ModeloDao dao = new ModeloDao();
dao.Excluir(modelo);

return true;

Após ter criado um controle do tipo botão, e alterado o seu título e nome
da variável

1. 👆2x no botão
2. Dentro do método “btSalvarActionPerformed”, você insere o código:

if (txtCodigo.getText().equals("")) {
int i = JOptionPane.showConfirmDialog(null,
if (i == JOptionPane.YES_NO_OPTION) {
salvarModelo();
}

} else {
int i = JOptionPane.showConfirmDialog(null,
if (i == JOptionPane.YES_NO_OPTION) {
atualizarModelo();
}

3. Dentro do método “btExcluirActionPerformed”, você insere o código:

Conectando o Banco de Dados in Java 14


// TODO add your handling code here:
ExcluirModelo();
CarregarTabela();

Agora 👆(botão direito) arquivo do formulário → run File

🚨 Observações:

voce clica duas vezes no botão de inserir o código

o código dos botões fica no local em que clica duas vezes no


botãoo código “Salvar”, “Excluir”,

Inserindo dados da tabela formulário

1. Dê um nome a variável da tabela: 👆tabela → propriets → code → altere


o nome da variável da tabela

🚨 É o mesmo local em que altero as variáveis das caixas de


texto

2. 👆(2x) tabela → Acima do comentário: “// Variables declaration - do not


modify” que se encontra no final ddo código, você insere esses outros
códigos:

// Método para preencher Tabela

private void preencherTabela() {


DefaultTableModel modelo = (DefaultTableModel)
modelo.setNumRows(0);
ModeloDao listaModelo = new ModeloDao();
for (Modelo p : listaModelo.ListarModelo()) {

Conectando o Banco de Dados in Java 15


modelo.addRow(new Object[]{
p.getIdModelo(),
p.getDescricao()
}
);
}

Corrigindo erros no código

colocar o nome do método "preencherTabela ();" dentro do método


construtor do código da tabela para que não ocorra erros

dentro do botão incluir você colocar o método "preencher tabela".


Dessa maneira, após você inserir os dados, a tabela será atualizada
automaticamente. Como no exemplo abaixo:

[...]btSalvarActionPerformed[...]{

preencherTabela();
}

Evento das tabelas

Insira o método abaixo:

// método para preencher textfield

public boolean preencherInformacao() {


int row = TabelaModelo.getSelectedRow();
if (TabelaModelo.getSelectedRow() != -1) {
txtCodigo.setText(String.valueOf(TabelaModelo.
txtDescicao.setText(String.valueOf(TabelaModel

Conectando o Banco de Dados in Java 16


return true;

Depois:

Selecione a linha na tabela e já edita

👆tabela (botão direto) → event → moise → mouseClicked ... te direcionará


a esse método “mouseClicked..()” e você add “” dentro (s/ aspas duplas,
isso foi usado para facilitar o entendimento do código);

Selecionar as linhas da tabela com o teclado

👆tabela (botão direto) → event → Key → keyPressed ... te direcionará a


esse método “keyPressed..()” e você add “preencherInformacao()” dentro.
(s/ aspas duplas, isso foi usado para facilitar o entendimento do código);

Teste
Crie uma classe “teste”, onde você testará se você consegue inserir, alterar ou
deletar dados do Banco de Dados a partir do Java.

public class TesteModelo{


public static void main (String[] args){
Modelo modelo = new Modelo();
modelo.setDescricao("Corola");

ModeloDao modeloDao = new ModeloDao();


modeloDao.Salvar(modelo);
}

🚨 Esse código deve está dentro do método main

Exemplos

Conectando o Banco de Dados in Java 17


Classe Cliente

Controle.Cliente

import java.sql.Date;
/**
*
* @author 06611666192
*/
public class Cliente {
int idCliente;
String cpf;
String nome;
Date dataNascimento;

public int getIdCliente() {


return idCliente;
}

public void setIdCliente(int idCliente) {


this.idCliente = idCliente;
}

public String getCpf() {


return cpf;
}

public void setCpf(String cpf) {


this.cpf = cpf;
}

public String getNome() {


return nome;
}

public void setNome(String nome) {

Conectando o Banco de Dados in Java 18


this.nome = nome;
}

public Date getDataNascimento() {


return dataNascimento;
}

public void setDataNascimento(Date dataNascimento) {


this.dataNascimento = dataNascimento;
}

Dao.ClienteDao

import Conexao.Conexao;
import Controle.Cliente;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;
/**
*
* @author 06611666192
*/
public class ClienteDao {

private final Connection connection;


public ClienteDao() {
this.connection = new Conexao().getConnection();
}

// Método para salvar um modelo


public void Salvar(Cliente cliente) {

Conectando o Banco de Dados in Java 19


String sql = "Insert into cliente (cpf, nome, data
try {
PreparedStatement pst = connection.prepareStat

pst.setString(1,cliente.getCpf());
pst.setString(2, cliente.getNome());
pst.setDate(3, cliente.getDataNascimento());
pst.executeUpdate();
JOptionPane.showMessageDialog(null, "Dados gra
} catch (SQLException ex) {
Logger.getLogger(ModeloDao.class.getName()).lo

}
}

// Método para Excluír o modelo


public void Excluir(Cliente cliente) {
String sql = "Delete from cliente where IdModelo=?
try {
PreparedStatement pst = connection.prepareStat
pst.setInt(1, cliente.getIdCliente());
pst.execute();
JOptionPane.showMessageDialog(null, "Exclusão
pst.close();
} catch (SQLException ex) {
Logger.getLogger(ModeloDao.class.getName()).lo
JOptionPane.showMessageDialog(null, "Erro ao t
}
}
//Método para Atualizar modelo

public void atualizar(Cliente cliente) {


String sql = "Update cliente set IdCliente =?, cpf
try {
PreparedStatement pst = connection.prepareStat
pst.setInt(1, cliente.getIdCliente());

Conectando o Banco de Dados in Java 20


pst.setString(2, cliente.getCpf());
pst.setString(3, cliente.getNome());
pst.setDate(4, cliente.getDataNascimento());
pst.executeUpdate();
JOptionPane.showMessageDialog(null, "Atualizaç
} catch (SQLException ex) {
Logger.getLogger(ModeloDao.class.getName()).lo
}

Conectando o Banco de Dados in Java 21

Você também pode gostar