![]() |
Ilustração de Bancos de Dados. |
Índice
Introdução
CRUD é uma sigla para Create, Read, Update e Delete, que são as quatro operações básicas para gerenciar dados em um banco de dados. Neste artigo, vamos criar um projeto CRUD em Delphi, utilizando o banco de dados MySQL e a biblioteca ADODB para conexão. Vamos abordar cada uma dessas operações com um exemplo prático e detalhado para que qualquer pessoa, mesmo iniciantes, possam entender e implementar.
Lembrando que esse será um exemplo muito simples de manipulação de banco de dados, feito da forma mais simples possível para que todos consigam entender.
Preparativos
Requisitos
Antes de começarmos, precisamos garantir que temos o seguinte instalado:
- Delphi (qualquer versão que suporte VCL e ADODB).
- MySQL Server.
- MySQL Workbench ou qualquer outro cliente MySQL para gerenciar o banco de dados.
Caso não saiba como instalar e configurar o MySql, veja o post abaixo:
https://codedelphi.com/banco-de-dados-em-delphi
Configuração do Banco de Dados
Para criar o banco de dados, abra o MySQl Workbench e selecione a instância da sua conexão e insira a senha que você escolheu na instalação:
![]() |
Tela Inicial do MySQL Workbench. |
Vamos criar um banco de dados MySQL chamado dbCRUD
e uma tabela tblClientes
com os seguintes campos:
CREATE DATABASE dbCRUD;
USE dbCRUD;
CREATE TABLE tblClientes (
id INT AUTO_INCREMENT PRIMARY KEY,
nome VARCHAR(255),
email VARCHAR(255),
telefone VARCHAR(20)
);
Crie uma nova aba SQL, para digitar os comandos acima e assim criar o banco de dados e a tabela que será utilizada nesse projeto. Siga a ordem das numerações da imagem abaixo. Insira o código na aba aberta, execute o código clicando no botão de executar e pronto, nosso banco de dados e tabela, estão criados.
![]() |
Ilustração de criação de um banco de dados e uma tabela. |
Configuração do Delphi
- Abra o Delphi e crie um novo projeto VCL Forms Application.
- Adicione um componente
TADOConnection
ao formulário para gerenciar a conexão com o banco de dados. - Adicione um componente
TADOTable
para manipular os dados da tabela. - Adicione componentes visuais como
TDBEdit
(3),TButton(4)
,TDataSource
(1),TDBGrid
(1) e TLabel(3).
Configuração da Conexão
Configure o componente TADOConnection
para se conectar ao banco de dados MySQL:
ADOConnection1.ConnectionString := 'Provider=MSDASQL.1;Password=yourpassword;User ID=yourusername;Data Source=yourdatasource;Initial Catalog=dbCRUD';
ADOConnection1.LoginPrompt := False;
Substitua yourpassword
, yourusername
, e yourdatasource
pelos valores apropriados.
Preparando o formulário
Adicione os componentes TDBEdit
para capturar o nome, e-mail e telefone, as TLabels para a descrição de cada campo, os TButton
para inserir, alterar, excluir e salvar os dados:
Para visualizar os dados, utilizamos um TDBGrid
conectado a um TDataSource
que, por sua vez, está conectado ao TADOTable
, além de ser necessário conectar o banco de dados e abrir a tabela para que os dados sejam exibidos. Isso pode ser feito no evento FormCreate do formuário,
procedure TForm1.FormCreate(Sender: TObject);
begin
//Configura a conexão com o MySql
ADOConnection1.ConnectionString := 'Provider=MSDASQL.1;Persist Security Info=False;User ID=root;Data Source=MySql ODBC 32 Ansi;Initial Catalog=dbcrud;';
ADOConnection1.DefaultDatabase := 'dbcrud';
ADOConnection1.LoginPrompt := False;//seta o login prompt para falso, para não exibir a entrada de senha
ADOConnection1.Connected := True; //Conecta o banco de dados
ADOConnection1.Connected := True; //Ativa a conexão
ADOTable1.Connection := ADOConnection1; //liga a conexão na tabela
ADOTable1.TableName := 'tblClientes';//seta o nome da tabela
ADOTable1.Active := True;//ativa a tabela
DataSource1.DataSet := ADOTable1; //liga a tabela ao datasource
DBGrid1.DataSource := DataSource1;//liga o datasource a grid
HabilitarDesabilitar(False);//Desabilita os campos para digitar
end;
Já no evento FormClose, iremos fechar as conexões sempre que o formulário for fechado.
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
ADOTable1.Close;//Fecha a conexão da tabela
ADOConnection1.Connected := False;//Fecha a conexão do banco de dados
end;
Operações CRUD em Delphi
CREATE (Inserir)
No evento ButtonInsertClick do botão inserir, vamos inserir o seguinte código para habilitar a inserção dos registros:
procedure TForm1.ButtonInsertClick(Sender: TObject);
begin
//Verifica se o registro não está em modo de inserção ou edição
if not (ADOTable1.State in [dsInsert, dsEdit]) then
begin
HabilitarDesabilitar(True);//Habilita os campos para digitar
ADOTable1.Insert; //Prepara o componente ADOTable1 para inserir os registros na tabela tblClientes
EditNome.SetFocus;//seta o foco na caixa de texto nome
end;
end;
UPDATE (Atualizar)
No evento ButtonUpdateClick do botão alterar, vamos inserir o seguinte código para habilitar a edição dos registros:
procedure TForm1.ButtonUpdateClick(Sender: TObject);
begin
//Verifica se a tabela possui registros para alterar
//e verifica se o registro não está em modo de inserção ou edição
if (not ADOTable1.IsEmpty) and (not (ADOTable1.State in [dsInsert, dsEdit])) then
begin
HabilitarDesabilitar(True);//Habilita os campos para digitar
ADOTable1.Edit;//Prepara o componente ADOTable1 para alterar os registros na tabela tblClientes
EditNome.SetFocus;//seta o foco na caixa de texto nome
end;
end;
DELETE (Deletar)
No evento ButtonDeleteClick botão excluir, vamos inserir o seguinte código para exclusão dos registros:
procedure TForm1.ButtonDeleteClick(Sender: TObject);
begin
//Verifica se a tabela tem registros inseridos, para serem excluídos
if not ADOTable1.IsEmpty then
begin
//faz uma pergunta para excluir o registro, caso responda sim, o registro será excluido
if MessageDlg('Deseja realmente excluir este cliente?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then
begin
ADOTable1.Delete;// comando para deletar o registro
ShowMessage('Cliente excluído com sucesso!');//Exibe mensagem de sucesso
end;
end;
end;
Funções complementares
Save (Salvar)
No evento ButtonSaveClick botão salvar, vamos inserir o seguinte código para salvar os registros:
procedure TForm1.ButtonSaveClick(Sender: TObject);
begin
//Verifica se a tabela está em modo de inserção ou edição, caso esteja, salva o registro
if (ADOTable1.State in [dsInsert, dsEdit]) then
begin
ADOTable1.Post;//Salva os dados no banco de dados
HabilitarDesabilitar(False);//Desabilita os campos para digitar
ShowMessage('Cliente salvo com sucesso!');//Exibe mensagem de sucesso.
end;
end;
HabilitarDesabilitar
Essa procedure é encarregada de habilitar e desabilitar os campos para inserção e edição sempre que os botões de inserir e alterar são acionados, para que os dados estejam protegidos e só sejam alterados quando for necessário.
procedure TForm1.HabilitarDesabilitar(Habilitar:Boolean);
begin
//Habilita e desabilita as caixas de texto de acordo com o parametro Habilitar
EditNome.Enabled := Habilitar;
EditEmail.Enabled := Habilitar;
EditTelefone.Enabled := Habilitar;
end;
Código fonte completo
unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Data.DB, Data.Win.ADODB, Vcl.StdCtrls, Vcl.Grids, Vcl.DBGrids, Vcl.Mask, Vcl.ExtCtrls, Vcl.DBCtrls;
type
TForm1 = class(TForm)
DBGrid1: TDBGrid;
ButtonInsert: TButton;
ButtonUpdate: TButton;
ButtonDelete: TButton;
EditNome: TDBEdit;
EditEmail: TDBEdit;
EditTelefone: TDBEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
ADOConnection1: TADOConnection;
ADOTable1: TADOTable;
DataSource1: TDataSource;
ADOTable1id: TAutoIncField;
ADOTable1nome: TStringField;
ADOTable1email: TStringField;
ADOTable1telefone: TStringField;
ButtonSave: TButton;
procedure FormCreate(Sender: TObject);
procedure ButtonInsertClick(Sender: TObject);
procedure ButtonUpdateClick(Sender: TObject);
procedure ButtonDeleteClick(Sender: TObject);
procedure ButtonSaveClick(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
procedure HabilitarDesabilitar(Habilitar:Boolean);
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.ButtonSaveClick(Sender: TObject);
begin
//Verifica se a tabela está em modo de inserção ou edição, caso esteja, salva o registro
if (ADOTable1.State in [dsInsert, dsEdit]) then
begin
ADOTable1.Post;//Salva os dados no banco de dados
HabilitarDesabilitar(False);//Desabilita os campos para digitar
ShowMessage('Cliente salvo com sucesso!');//Exibe mensagem de sucesso.
end;
end;
procedure TForm1.ButtonDeleteClick(Sender: TObject);
begin
//Verifica se a tabela tem registros inseridos, para serem excluídos
if not ADOTable1.IsEmpty then
begin
//faz uma pergunta para excluir o registro, caso responda sim, o registro será excluido
if MessageDlg('Deseja realmente excluir este cliente?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then
begin
ADOTable1.Delete;// comando para deletar o registro
ShowMessage('Cliente excluído com sucesso!');//Exibe mensagem de sucesso
end;
end;
end;
procedure TForm1.ButtonInsertClick(Sender: TObject);
begin
//Verifica se o registro não está em modo de inserção ou edição
if not (ADOTable1.State in [dsInsert, dsEdit]) then
begin
HabilitarDesabilitar(True);//Habilita os campos para digitar
ADOTable1.Insert; //Prepara o componente ADOTable1 para inserir os registros na tabela tblClientes
EditNome.SetFocus;//seta o foco na caixa de texto nome
end;
end;
procedure TForm1.ButtonUpdateClick(Sender: TObject);
begin
//Verifica se a tabela possui registros para alterar
//e verifica se o registro não está em modo de inserção ou edição
if (not ADOTable1.IsEmpty) and (not (ADOTable1.State in [dsInsert, dsEdit])) then
begin
HabilitarDesabilitar(True);//Habilita os campos para digitar
ADOTable1.Edit;//Prepara o componente ADOTable1 para alterar os registros na tabela tblClientes
EditNome.SetFocus;//seta o foco na caixa de texto nome
end;
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
ADOTable1.Close;//Fecha a conexão da tabela
ADOConnection1.Connected := False;//Fecha a conexão do banco de dados
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
//Configura a conexão com o MySql
ADOConnection1.ConnectionString := 'Provider=MSDASQL.1;Persist Security Info=False;User ID=root;Data Source=MySql ODBC 32 Ansi;Initial Catalog=dbcrud;';
ADOConnection1.DefaultDatabase := 'dbcrud';
ADOConnection1.LoginPrompt := False;//seta o login prompt para falso, para não exibir a entrada de senha
ADOConnection1.Connected := True; //Conecta o banco de dados
ADOConnection1.Connected := True; //Ativa a conexão
ADOTable1.Connection := ADOConnection1; //liga a conexão na tabela
ADOTable1.TableName := 'tblClientes';//seta o nome da tabela
ADOTable1.Active := True;//ativa a tabela
DataSource1.DataSet := ADOTable1; //liga a tabela ao datasource
DBGrid1.DataSource := DataSource1;//liga o datasource a grid
HabilitarDesabilitar(False);//Desabilita os campos para digitar
end;
procedure TForm1.HabilitarDesabilitar(Habilitar:Boolean);
begin
//Habilita e desabilita as caixas de texto de acordo com o parametro Habilitar
EditNome.Enabled := Habilitar;
EditEmail.Enabled := Habilitar;
EditTelefone.Enabled := Habilitar;
end;
end.
![]() |
Ilustração do projeto. |
Código fonte do exemplo
Você pode fazer o download do exemplo do projeto através do repositório do github:
https://github.com/Gisele-de-Melo/CRUD-MySql-ADODB
Conclusão
Criar um projeto CRUD em Delphi usando MySQL e ADODB é uma excelente maneira de aprender sobre manipulação de dados e interação com bancos de dados. Este tutorial mostrou como configurar a conexão, criar, ler, atualizar e deletar registros de forma simples e clara. A prática desses conceitos ajudará você a desenvolver aplicações mais complexas e robustas no futuro. Continue explorando e expandindo suas habilidades em Delphi e desenvolvimento de banco de dados!
Por favor, deixe seus comentários e sugestões abaixo. Estamos sempre abertos a feedback para melhorar nossos tutoriais e ajudar você a se tornar um desenvolvedor Delphi ainda melhor!
Nenhum comentário:
Postar um comentário