lunes, 10 de agosto de 2020

Tutorial de programación Free Pascal y MariaDB - Primera parte

                             

Tutoriales de programación de Free Pascal hay muchos, las funcionalidades básicas está muy explicadas, sin embargo, a la hora de especializarse es cuando se encuentran los detalles, así fue como me dediqué a realizar este tutorial.

Si quieres lo básico de Free Pascal, te recomiendo la siguiente página.

Preliminares

Antes de comenzar, necesitas tener instalado Free Pascal y MariaDB

En MariaDB necesitamos crear la base de datos "tutorial".

Comenzamos!

Por lo general, comienzo con el esqueleto de la programación de Pascal:

Program tutorial;  
Uses
   Crt;
Begin
End.


A partir de este esqueleto le voy agregando lo que vaya requiriendo. Lo hago así porque, si compilo este esqueleto, funciona, no marca error.

Solo he usado la librería de MySQL4 que viene por defecto en Free Pascal, me ha servido, y es el que quiero mostrar, se añade en la parte Uses:

Program tutorial;
{$codepage UTF8}
{$mode objfpc}{$H+}
Uses
   Crt, MySQL4;
Begin
End.

Añado las directivas al compilador:

{$codepage UTF8}
{$mode objfpc}{$H+}

La primera la uso para poder imprimir letras con acentos y la segunda para las funcionalidades de MariaDB.

Hasta aquí, el programa realmente no hace nada, excepto mostrar error si algo te hace falta.

Para mejor entendimiento, usaré programación estructurada de la manera más simple posible.

En el cuerpo principal del programa limpiaré la pantalla para tener mayor área de trabajo.

En seguida, solicitaré los datos de conexión para la base de datos de MariaDB, para esto usaré las variables:

servidor, usuario, contrasena, basededatos

Todas de tipo string

Para esto imprimo la cadena informativa de la información que solicito e inmediatamente después leo la respuesta del usuario y la almaceno en la variable correspondiente:

Program tutorial;
Uses
   Crt, MySQL4;
Var
   servidor, usuario, contrasena, basededatos : String;
Begin
   ClrScr;
   Write('Servidor: ');
   Readln(servidor);
   Write('Usuario: ');
   Readln(usuario);
   Write('Contraseña: ');
   Readln(contrasena);
   Write('Base de Datos: ');
   Readln(basededatos); 
End.

Aquí viene la parte más práctica: la conexión a MariaDB.
Para la conexión se requieren las variables:
alloc (de allocate, asignación) y socket del tipo PMYSQL
qmysql del tipo TMYSQL

Primeramente realizamos la asignación para inicializar la conexión a MariaDB, para esto usamos:

alloc := mysql_init(PMYSQL(@qmysql));

Después de esto formateamos los datos de conexión para poder usarlos con el conector MySQL para conectar a MariaDB así:

socket := mysql_real_connect(alloc, PChar(servidor), PChar(usuario), PChar(contrasena), PChar(basededatos), 0, Nil, 0);

Solo nos resta verificar la conexión y en caso de error, mostrar la información correspondiente con:

If socket=Nil then
Begin
   Writeln(stderr,'No se pudo conectar a MariaDB');
   Writeln(stderr, 'El error fue: ', mysql_error(@qmysql));
   halt(1);
End;

Por lo que nuestro código quedaría así:

Program tutorial;
{$codepage UTF8}
{$mode objfpc}{$H+}

Uses
   Crt, MySQL4;

Var
   servidor, usuario, contrasena, basededatos : String;
   alloc,socket : PMYSQL;
   qmysql : TMYSQL;
Begin
   ClrScr;
   Write('Servidor: ');
   Readln(servidor);
   Write('Usuario: ');
   Readln(usuario);
   Write('Contraseña: ');
   Readln(contrasena);
   Write('Base de Datos: ');
   Readln(basededatos);
   alloc := mysql_init(PMYSQL(@qmysql));
   socket := mysql_real_connect(alloc, PChar(servidor), PChar(usuario), PChar(contrasena), PChar(basededatos), 0, nil, 0);
   If socket=Nil Then
   Begin
      Writeln (stderr,'Couldn''t connect to MySQL.');
      Writeln (stderr, 'Error was: ', mysql_error(@qmysql));
      halt(1);
   end;
End.

Si al llegar aquí puedes compilar sin error, estás listo para la segunda parte de este tutorial; en caso contrario, habrá que revisar tu código para encontrar el error, porque, de que funciona, funciona...

Saludos y hasta la próxima!
Segunda parte del tutorial aquí

No hay comentarios.:

Publicar un comentario