Acessando banco de dados com Java
Esse é talvez um dos assuntos mais buscados por quem está aprendendo Java. Há muitas referências a isso na internet, inclusive uma série de artigos que o criado desse blog escreveu há mais de 5 anos atrás para o JavaFree, veja: Acessando dados com Java: 1º parte - Simples Dao - Acessando Dados com Java: Parte 2 - Prevendo problemas - Acessando Dados com Java: Parte 3 - Hibernate Annotations
Preparando o banco
O primeiro passo nosso é garantir que você tenha o MySQL instalado(que depende do sistema operacional sendo utilizado, Linux ou outros) e uma vez feito isso, entre no MySQL e então seguir alguns passos. Para esse artigo foi criado o seguinte:
- Usuário contas_app com senha aprendajavafx;
CREATE USER 'contas_app'@'localhost' IDENTIFIED BY 'aprendajavafx';
- Banco de dados contas crud-contas;
CREATE DATABASE `crud-contas` DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci
- Garanta os privilégios do usuário contas_app para o banco crud-contas
mysql> use crud-contas
Database changed
mysql> GRANT ALL PRIVILEGES ON * . * TO 'contas_app'@'localhost';
- Tabela Contas com os campos que precisamos
create table contas(
id int auto_increment,
concessionaria varchar(30) not null,
descricao varchar(1000) not null,
data_vencimento date not null,
primary key(id)
);
Notem que o ID é auto_increment, ou seja, o MySQL vai dar o ID para nós. Se inserirmos alguns valores de teste, podemos notar que o ID já foi preenchido:
Criando uma classe para acesso ao banco de dados
Conforme falamos no artigo anterior, para trocar onde os dados serão armazenados nós iremos criar uma implementação de ContasService e trocar o tipo retornado no método getNewInstance.
Para falarmos com o nosso banco de dados MySQL, precisamos ter o Driver JDBC no classpath da aplicação, pois é ele quem possibilita a comunicação de uma aplicação Java com o banco. Por isso, baixe o driver JDBC do MySQL e coloque no classpath da aplicação.
A implementação do banco de dados simplesmente envia comandos SQL para o MySQL invés de abrir e manipular arquivos, assim temos que:
* Salvar significa realizar um INSERT com os dados da conta passada;
* Buscar é trazer dados usando SELECT e transformar em uma lista de contas;
* Apagar é realizar um DELETE;
* Por fim atualizar é a realização de um UPDATE.
Claro que tudo pode ser facilitado usando um framework que faz o mapeamento de objetos para o modelo relacional de banco de dados, como o Hibernate, mas por hoje vamos ficar no básico! Finalmente, veja como ficou nossa classe ContasDBService (lembre-se que todo o código pode ser encontrado no github):
A implementação do banco de dados simplesmente envia comandos SQL para o MySQL invés de abrir e manipular arquivos, assim temos que:
* Salvar significa realizar um INSERT com os dados da conta passada;
* Buscar é trazer dados usando SELECT e transformar em uma lista de contas;
* Apagar é realizar um DELETE;
* Por fim atualizar é a realização de um UPDATE.
Claro que tudo pode ser facilitado usando um framework que faz o mapeamento de objetos para o modelo relacional de banco de dados, como o Hibernate, mas por hoje vamos ficar no básico! Finalmente, veja como ficou nossa classe ContasDBService (lembre-se que todo o código pode ser encontrado no github):
Boa tarde, tenho muito interesse em aprender javafx conheço um pouco sobre java e em uma googlada encontrei este blog, por onde devo começar? Forte abraço!
ResponderExcluirOlá! Comece por aqui -> http://aprendendo-javafx.blogspot.com.br/p/o-que-e-javafx.html
ExcluirBons Estudos :)
Boa noite, estou com uma dúvida, realizei o CRUD utilizando o banco de dados, como eu incluo a ação do botão salvar sendo que utilizo javafx FXML, utilizo o SceneBuilder para criar minhas telas, nessa parte do código não ficou claro como realizo essa operação, caso possa me ajudar, serei grato.
ResponderExcluirAbraços.
Olá! A ação do botão salvar está aqui:
ResponderExcluirButton fx:id="btnSalvar" mnemonicParsing="false" onAction="#salvar" text="Salvar"
Este comentário foi removido pelo autor.
ResponderExcluirBom dia,
ResponderExcluirEstou com o seguinte problema em relação a data, no meu banco de dados MySql, a data está correta, quando exibo as informações em uma TableView, a data está vindo sempre com 1 dia a menos. Por exemplo: no banco esta: 12/09/2018, na TableView aparece 11/09/2018, o que pode estar ocasionando esse erro?
Estou usando o Eclipse Oxygen, desde já agradeço