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

  1. Afegir Components al Formulari

    • Arrossega un component TSQLConnection, TSQLQuery, TDataSource i TDBGrid al formulari.
  2. 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
        
  3. Configurar el Component TSQLQuery

    • Selecciona el component TSQLQuery i configura les propietats següents:
      • SQLConnection: Selecciona el component TSQLConnection.
      • SQL.Text:
        SELECT * FROM mytable;
        
  4. Configurar el Component TDataSource

    • Selecciona el component TDataSource i configura la propietat DataSet per apuntar al component TSQLQuery.
  5. Configurar el Component TDBGrid

    • Selecciona el component TDBGrid i configura la propietat DataSource per apuntar al component TDataSource.

Codi per Establir la Connexió

procedure TForm1.FormCreate(Sender: TObject);
begin
  SQLConnection1.Open;
  SQLQuery1.Open;
end;

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

Mòdul 2: Estructures de Control i Procediments

Mòdul 3: Treballant amb Dades

Mòdul 4: Programació Orientada a Objectes

Mòdul 5: Funcions Avançades de Delphi

Mòdul 6: Desenvolupament d'Interfícies Gràfiques amb VCL i FMX

Mòdul 7: Desenvolupament Web i Mòbil

Mòdul 8: Millors Pràctiques i Patrons de Disseny

Mòdul 9: Projecte Final

© Copyright 2024. Tots els drets reservats