
Í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:

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.

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.

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!
Posts Relacionados
Delphi para Android e iOS
Delphi Start
Programando em Delphi XE
Aprenda programar Delphi
Banco de Dados RAD Delphi
Delphi Programming Projects