En aquest tema, aprendrem com accedir i manipular bases de dades utilitzant Delphi/Object Pascal. Aquest és un aspecte fonamental per a moltes aplicacions, ja que les bases de dades permeten emmagatzemar i recuperar grans quantitats d'informació de manera eficient.
Objectius del Tema
- Entendre els conceptes bàsics de les bases de dades.
- Configurar una connexió a una base de dades en Delphi.
- Realitzar operacions bàsiques de CRUD (Create, Read, Update, Delete).
- Utilitzar components de Delphi per treballar amb bases de dades.
Conceptes Bàsics de Bases de Dades
Abans de començar a treballar amb bases de dades en Delphi, és important comprendre alguns conceptes bàsics:
- Base de Dades (Database): Una col·lecció organitzada de dades.
- Taula (Table): Una estructura dins d'una base de dades que emmagatzema dades en files i columnes.
- Registre (Record): Una fila en una taula.
- Camp (Field): Una columna en una taula.
- SQL (Structured Query Language): Un llenguatge utilitzat per interactuar amb bases de dades.
Configuració de la Connexió a la Base de Dades
Components Necessaris
Per accedir a una base de dades en Delphi, utilitzarem els següents components:
- TSQLConnection: Per establir la connexió amb la base de dades.
- TSQLQuery: Per executar consultes SQL.
- TDataSource: Per enllaçar dades a controls visuals.
- TDBGrid: Per mostrar dades en una taula.
Exemple de Connexió a una Base de Dades MySQL
-
Afegir Components al Formulari
- Arrossega un component
TSQLConnection
,TSQLQuery
,TDataSource
iTDBGrid
al formulari.
- Arrossega un component
-
Configurar el Component TSQLConnection
- Selecciona el component
TSQLConnection
i configura les propietats següents:DriverName
:MySQL
Params
:Database=mydatabase User_Name=root Password=mypassword HostName=localhost
- Selecciona el component
-
Configurar el Component TSQLQuery
- Selecciona el component
TSQLQuery
i configura les propietats següents:SQLConnection
: Selecciona el componentTSQLConnection
.SQL.Text
:SELECT * FROM mytable;
- Selecciona el component
-
Configurar el Component TDataSource
- Selecciona el component
TDataSource
i configura la propietatDataSet
per apuntar al componentTSQLQuery
.
- Selecciona el component
-
Configurar el Component TDBGrid
- Selecciona el component
TDBGrid
i configura la propietatDataSource
per apuntar al componentTDataSource
.
- Selecciona el component
Codi per Establir la Connexió
Operacions CRUD
Crear (Create)
Per inserir un nou registre a la base de dades, utilitzarem una consulta INSERT
.
procedure TForm1.InsertRecord; begin SQLQuery1.SQL.Text := 'INSERT INTO mytable (field1, field2) VALUES (:value1, :value2)'; SQLQuery1.Params.ParamByName('value1').AsString := 'New Value 1'; SQLQuery1.Params.ParamByName('value2').AsString := 'New Value 2'; SQLQuery1.ExecSQL; SQLQuery1.Close; SQLQuery1.Open; end;
Llegir (Read)
Per llegir dades de la base de dades, utilitzarem una consulta SELECT
.
procedure TForm1.ReadRecords; begin SQLQuery1.SQL.Text := 'SELECT * FROM mytable'; SQLQuery1.Open; end;
Actualitzar (Update)
Per actualitzar un registre existent, utilitzarem una consulta UPDATE
.
procedure TForm1.UpdateRecord; begin SQLQuery1.SQL.Text := 'UPDATE mytable SET field1 = :newvalue WHERE id = :id'; SQLQuery1.Params.ParamByName('newvalue').AsString := 'Updated Value'; SQLQuery1.Params.ParamByName('id').AsInteger := 1; SQLQuery1.ExecSQL; SQLQuery1.Close; SQLQuery1.Open; end;
Esborrar (Delete)
Per esborrar un registre de la base de dades, utilitzarem una consulta DELETE
.
procedure TForm1.DeleteRecord; begin SQLQuery1.SQL.Text := 'DELETE FROM mytable WHERE id = :id'; SQLQuery1.Params.ParamByName('id').AsInteger := 1; SQLQuery1.ExecSQL; SQLQuery1.Close; SQLQuery1.Open; end;
Exercicis Pràctics
Exercici 1: Connexió a la Base de Dades
Configura una connexió a una base de dades SQLite i mostra les dades d'una taula en un TDBGrid
.
Exercici 2: Operacions CRUD
Implementa les operacions CRUD per una taula anomenada products
amb els camps id
, name
i price
.
Solucions
Solució Exercici 1
procedure TForm1.FormCreate(Sender: TObject); begin SQLConnection1.DriverName := 'SQLite'; SQLConnection1.Params.Values['Database'] := 'mydatabase.db'; SQLConnection1.Open; SQLQuery1.SQL.Text := 'SELECT * FROM products'; SQLQuery1.Open; end;
Solució Exercici 2
procedure TForm1.InsertProduct; begin SQLQuery1.SQL.Text := 'INSERT INTO products (name, price) VALUES (:name, :price)'; SQLQuery1.Params.ParamByName('name').AsString := 'New Product'; SQLQuery1.Params.ParamByName('price').AsFloat := 9.99; SQLQuery1.ExecSQL; SQLQuery1.Close; SQLQuery1.Open; end; procedure TForm1.UpdateProduct; begin SQLQuery1.SQL.Text := 'UPDATE products SET name = :name, price = :price WHERE id = :id'; SQLQuery1.Params.ParamByName('name').AsString := 'Updated Product'; SQLQuery1.Params.ParamByName('price').AsFloat := 19.99; SQLQuery1.Params.ParamByName('id').AsInteger := 1; SQLQuery1.ExecSQL; SQLQuery1.Close; SQLQuery1.Open; end; procedure TForm1.DeleteProduct; begin SQLQuery1.SQL.Text := 'DELETE FROM products WHERE id = :id'; SQLQuery1.Params.ParamByName('id').AsInteger := 1; SQLQuery1.ExecSQL; SQLQuery1.Close; SQLQuery1.Open; end;
Resum
En aquest tema, hem après a configurar una connexió a una base de dades en Delphi, així com a realitzar operacions bàsiques de CRUD. Hem utilitzat components com TSQLConnection
, TSQLQuery
, TDataSource
i TDBGrid
per treballar amb bases de dades de manera eficient. A més, hem practicat amb exercicis per reforçar els conceptes apresos. En el següent tema, explorarem la programació orientada a objectes en Delphi.
Curs de Programació Delphi/Object Pascal
Mòdul 1: Introducció a Delphi/Object Pascal
- Introducció a Delphi i Object Pascal
- Configuració de l'Entorn de Desenvolupament
- Primera Aplicació Delphi
- Sintaxi i Estructura Bàsiques
- Variables i Tipus de Dades
Mòdul 2: Estructures de Control i Procediments
- Declaracions Condicionals
- Bucles i Iteració
- Procediments i Funcions
- Abast i Durada de les Variables
- Gestió d'Errors i Depuració
Mòdul 3: Treballant amb Dades
- Arrays i Cadenes
- Registres i Conjunts
- Tipus Enumerats i Subrang
- Gestió d'Arxius
- Accés a Bases de Dades
Mòdul 4: Programació Orientada a Objectes
- Introducció a la POO
- Classes i Objectes
- Herència i Polimorfisme
- Interfícies i Classes Abstractes
- Gestió d'Excepcions en POO
Mòdul 5: Funcions Avançades de Delphi
- Generics i Col·leccions
- Multifil i Programació Paral·lela
- Desenvolupament Basat en Components
- Biblioteca d'Execució de Delphi (RTL)
- Tècniques Avançades de Depuració
Mòdul 6: Desenvolupament d'Interfícies Gràfiques amb VCL i FMX
- Introducció a VCL
- Creació de Formularis i Controls
- Programació Basada en Esdeveniments
- Introducció a FireMonkey (FMX)
- Desenvolupament Multiplataforma amb FMX
Mòdul 7: Desenvolupament Web i Mòbil
- Desenvolupament Web amb Delphi
- Serveis RESTful
- Desenvolupament Mòbil amb Delphi
- Desplegament d'Aplicacions Mòbils
- Integració amb Serveis Web
Mòdul 8: Millors Pràctiques i Patrons de Disseny
- Organització del Codi i Documentació
- Patrons de Disseny en Delphi
- Tècniques de Refactorització
- Proves Unitàries i Desenvolupament Basat en Proves
- Optimització del Rendiment