En aquest tema, aprendrem com accedir i manipular bases de dades utilitzant RPG. Aquest és un aspecte fonamental per a qualsevol aplicació que necessiti emmagatzemar, recuperar i gestionar dades de manera eficient. Explorarem les operacions bàsiques com la connexió a una base de dades, la realització de consultes, la inserció, l'actualització i l'eliminació de registres.

Objectius del Tema

  • Entendre com connectar-se a una base de dades des d'un programa RPG.
  • Aprendre a realitzar operacions bàsiques de CRUD (Create, Read, Update, Delete).
  • Conèixer les funcions i procediments RPG per a la gestió de bases de dades.
  • Practicar amb exemples pràctics i exercicis.

  1. Connexió a una Base de Dades

1.1. Configuració de la Connexió

Per accedir a una base de dades des d'un programa RPG, primer hem de configurar la connexió. Això implica especificar els detalls de la base de dades com el nom del servidor, el nom de la base de dades, l'usuari i la contrasenya.

Dcl-S dbName Char(50) Inz('myDatabase');
Dcl-S dbUser Char(50) Inz('myUser');
Dcl-S dbPassword Char(50) Inz('myPassword');
Dcl-S dbServer Char(50) Inz('myServer');

Exec SQL
  CONNECT TO :dbName USER :dbUser USING :dbPassword;

1.2. Verificació de la Connexió

Després de configurar la connexió, és important verificar que s'ha establert correctament.

If SQLCODE <> 0;
  Dsply 'Error en la connexió a la base de dades';
  Return;
EndIf;

  1. Operacions CRUD

2.1. Creació de Registres (INSERT)

Per inserir nous registres a la base de dades, utilitzem la instrucció SQL INSERT INTO.

Dcl-S empName Char(50) Inz('John Doe');
Dcl-S empAge Int(10) Inz(30);

Exec SQL
  INSERT INTO employees (name, age)
  VALUES (:empName, :empAge);

If SQLCODE <> 0;
  Dsply 'Error en la inserció del registre';
EndIf;

2.2. Lectura de Registres (SELECT)

Per recuperar dades de la base de dades, utilitzem la instrucció SQL SELECT.

Dcl-S empId Int(10) Inz(1);
Dcl-S empName Char(50);
Dcl-S empAge Int(10);

Exec SQL
  SELECT name, age INTO :empName, :empAge
  FROM employees
  WHERE id = :empId;

If SQLCODE <> 0;
  Dsply 'Error en la recuperació del registre';
Else;
  Dsply ('Nom: ' + %Trim(empName) + ', Edat: ' + %Char(empAge));
EndIf;

2.3. Actualització de Registres (UPDATE)

Per actualitzar registres existents, utilitzem la instrucció SQL UPDATE.

Dcl-S empId Int(10) Inz(1);
Dcl-S newAge Int(10) Inz(35);

Exec SQL
  UPDATE employees
  SET age = :newAge
  WHERE id = :empId;

If SQLCODE <> 0;
  Dsply 'Error en l\'actualització del registre';
EndIf;

2.4. Eliminació de Registres (DELETE)

Per eliminar registres de la base de dades, utilitzem la instrucció SQL DELETE.

Dcl-S empId Int(10) Inz(1);

Exec SQL
  DELETE FROM employees
  WHERE id = :empId;

If SQLCODE <> 0;
  Dsply 'Error en l\'eliminació del registre';
EndIf;

  1. Exemples Pràctics

Exemple 1: Inserir un Nou Empleat

Dcl-S empName Char(50) Inz('Alice Smith');
Dcl-S empAge Int(10) Inz(28);

Exec SQL
  INSERT INTO employees (name, age)
  VALUES (:empName, :empAge);

If SQLCODE <> 0;
  Dsply 'Error en la inserció del registre';
Else;
  Dsply 'Registre inserit correctament';
EndIf;

Exemple 2: Recuperar Informació d'un Empleat

Dcl-S empId Int(10) Inz(2);
Dcl-S empName Char(50);
Dcl-S empAge Int(10);

Exec SQL
  SELECT name, age INTO :empName, :empAge
  FROM employees
  WHERE id = :empId;

If SQLCODE <> 0;
  Dsply 'Error en la recuperació del registre';
Else;
  Dsply ('Nom: ' + %Trim(empName) + ', Edat: ' + %Char(empAge));
EndIf;

  1. Exercicis Pràctics

Exercici 1: Inserir un Nou Registre

Escriu un programa RPG que insereixi un nou registre a la taula employees amb els següents detalls:

  • Nom: "Carlos Perez"
  • Edat: 40

Solució

Dcl-S empName Char(50) Inz('Carlos Perez');
Dcl-S empAge Int(10) Inz(40);

Exec SQL
  INSERT INTO employees (name, age)
  VALUES (:empName, :empAge);

If SQLCODE <> 0;
  Dsply 'Error en la inserció del registre';
Else;
  Dsply 'Registre inserit correctament';
EndIf;

Exercici 2: Actualitzar l'Edat d'un Empleat

Escriu un programa RPG que actualitzi l'edat de l'empleat amb ID 3 a 45 anys.

Solució

Dcl-S empId Int(10) Inz(3);
Dcl-S newAge Int(10) Inz(45);

Exec SQL
  UPDATE employees
  SET age = :newAge
  WHERE id = :empId;

If SQLCODE <> 0;
  Dsply 'Error en l\'actualització del registre';
Else;
  Dsply 'Registre actualitzat correctament';
EndIf;

Conclusió

En aquesta secció, hem après com connectar-nos a una base de dades i realitzar operacions bàsiques de CRUD utilitzant RPG. Aquestes habilitats són essencials per a qualsevol desenvolupador que treballi amb aplicacions que necessiten gestionar dades de manera eficient. Practica amb els exemples i exercicis proporcionats per consolidar els teus coneixements i estar preparat per a les seccions més avançades del curs.

© Copyright 2024. Tots els drets reservats