Cualquier lenguaje de programación moderno tiene la capacidad para la conexión a SGBD como: Oracle, PostgreSQL, MySQL, MariaDB, entre otros.
Ballerina no podía ser la excepción. Veremos como conectarnos a MariaDB, un SGBD "fork" de MySQL.
Creando la aplicación con Ballerina y MariaDB.
Empezamos creando una sencilla base de datos llamada ``cursomariadb`` y una tabla llamada ``persons``:
CREATE OR REPLACE TABLE( personid int, lastname varchar(45), firstname varchar(45), address varchar(100), city varchar(45) );
Insertamos algunos valores:
INSERT INTO persons( personid, lastname, firstname, address, city ) VALUES (1 , "Moreno" , "Carmen" , "Gonzalez Arraga 102" , "Gotham" ); INSERT INTO persons( personid, lastname, firstname, address, city ) VALUES( 2 , "Torres" , "Jimena" , "Lagos de Morelos no. 199" , "Toluca" ); INSERT INTO persons( personid, lastname, firstname, address, city ) VALUES ( 3 , "Huertas" , "Hugo Manuel" , "Terracota veinte de julio s/n" , "Cuajimalpa");
Abrimos una terminal y creamos el proyecto:
$ bal new datos-mariadb $ cd datos-mariadb
Una vez ubicados en el directorio creado, editamos el archivo main.bal
Importamos los paquetes necesarios:
import ballerina/io; import ballerina/sql; import ballerinax/mysql; import ballerinax/mysql.driver as _;
Colocamos los datos necesarios para conectarnos a la base de datos:
configurable string host = "localhost"; configurable int port = 3306; configurable string user = "root"; configurable string password = "tupassw"; configurable string database = "cursomariadb";
La consulta SQL será sencilla, con esto obtendremos todos los datos:
SELECT * FROM persons;
Crearemos una estructura que contemple los campos de la tabla persons:
type Person record {| int personid; string lastname; string firstname; string address; string city; |};
Como se puede ver, estamos homologando los campos de la tabla.
Ahora usaremos un cliente para acceder a la BD y realizar la consulta:
mysql:Client dbClient = check new ( host = host, port = port, user = user, password = password, database = database );
Con esto ejecutaremos la consulta, obtendremos los datos y al final cerraremos la conexión:
stream<Person, sql:Error?> resultStream = dbClient->query(`SELECT * FROM persons`); // Procesar los resultados y concatenar en una cadena check from Person person in resultStream do { string sb = string `ID: ${person.personid}, Nombre: ${person.firstname}, Apellido: ${person.lastname}, Dirección: ${person.address}, Ciudad: ${person.city}`; io:println(sb); }; // Cerrar el stream de resultados check resultStream.close(); // Cerrar el cliente de la base de datos check dbClient.close();
Código completo:
main.bal
import ballerina/io; import ballerina/sql; import ballerinax/mysql; import ballerinax/mysql.driver as _; configurable string host = "localhost"; configurable int port = 3306; configurable string user = "root"; configurable string password = "tupassw"; configurable string database = "cursomariadb"; type Person record {| int personid; string lastname; string firstname; string address; string city; |}; public function main() returns error? { io:println("\n [ Conexión a MariaDB con Ballerina ] "); // Crear cliente MySQL mysql:Client dbClient = check new ( host = host, port = port, user = user, password = password, database = database ); // Ejecutar la consulta SELECT * FROM persons stream<Person, sql:Error?> resultStream = dbClient->query(`SELECT * FROM persons`); // Procesar los resultados y concatenar en una cadena check from Person person in resultStream do { string sb = string `ID: ${person.personid}, Nombre: ${person.firstname}, Apellido: ${person.lastname}, Dirección: ${person.address}, Ciudad: ${person.city}`; io:println(sb); }; // Cerrar el stream de resultados check resultStream.close(); // Cerrar el cliente de la base de datos check dbClient.close(); io:println("Consulta completada exitosamente."); }
Compilamos y ejecutamos:
$ bal build $ bal run
¡Hemos creado una aplicación que accede a una BD y obtiene datos de una consulta con Ballerina!
Más sobre este lenguaje en próximas entregas.
Enlaces:
https://ballerina.io/
Comentarios
Publicar un comentario