Esta es un proyecto universitario para Bases de Datos II. Asignatura que forma parte de la currícula del Tecnólgo en Informática, carrera ofrecida por UTEC.
El objetivo de esta actividad es crear un programa que sea ejecutado a través de la terminal y que cuente con las operaciones básicas de un CRUD (Create, Read, Update, Delete), realizando una conexión entre C++ y MySQL Server.
Este proyecto se desarrolló con el paradigma de Programación Orientada a Objetos implementando una arquitectura en 3 capas (presentación, lógica y persistencia).
La capa de entrada, o sea la de presentación, se ve reflejada en los ficheros main.cpp
, Menu.h
y Menu.cpp
.
En estos ficheros se realiza la implementación de un menú básico, el cual muestra y sirve las opciones
necesarias para invocar cada consulta.
Este menú se visualiza de la siguiente manera:
-
Instalación de MySQL Server por línea de comando:
sudo apt update
sudo apt install mysql-server
-
Comprobación de estado del servicio mysql:
sudo systemctl status mysql
Esto da como respuesta:
Si su estado no es active (running), se puede iniciar con el siguiente comando:
sudo systemctl start mysql
-
Securización de MySQL Server (opcional):
El siguiente comando ayuda a configurar parámetros de seguridad al servidor de MySQL:
sudo mysql_secure_installation
Con esto, es posible realizar lo siguiente:
- Establecer una contraseña para la cuenta root.
- Eliminar el acceso anónimo.
- Eliminar la base de datos de test.
-
Ingreso a MySQL Server:
sudo mysql -h localhost -root -p
-
Creación de la BD biblioteca y su usuario asignado "tecnologo":
Una vez dentro del servidor MySQL se debe crear la base de datos con el siguiente comando:
CREATE DATABASE biblioteca;
Luego, para crear el usuario a utilizar para la conexión:
CREATE USER tecnologo@localhost IDENTIFIED BY "tecnologo";
GRANT ALL PRIVILEGES ON biblioteca.* TO tecnologo@localhost WITH GRANT OPTION;
-
Creación de la tabla libro:
CREATE TABLE libro ( isbn VARCHAR(30) NOT NULL, titulo VARCHAR(50) NULL, edicion VARCHAR(50) NULL, autor VARCHAR(50) NULL, cantPaginas INT(10) NULL, PRIMARY KEY (isbn) ) ENGINE = InnoDB;
-
Descarga de la librería del conector en Ubuntu 18.04:
sudo apt install libmysqlcppconn-dev
-
Luego se debe localizar la ruta de inclusión del conector instalado, esto es necesario para la compilación. Con el siguiente comando se van a listar una serie de rutas en las cuales se encuentran los ficheros relacionados al conector:
dpkg -L libmysqlcppconn-dev
-
En este caso, como se almacenaron en la ruta
/usr/include/
, la misma se debe utilizar al momento de compilar el código fuente que dependa del conector. Por ejemplo:g++ -o main main.cpp -I/usr/include/ -lmysqlcppconn
Como el proceso de compilación es con make, una instrucción similar se agregó en el fichero makefile.
-
Para descargar el proyecto es necesario tener instalado Git. Luego, es suficiente con ingresar a la terminal e ingresar el siguiente comando:
git clone https://github.com/AVelazquez97/Lab3_BD2_AlexisVelazquez.git
Para este desarrollo se utiliza el compilador g++ y un fichero makefile. Este fichero contiene las instrucciones de compilación y es ejecutado por la herramiente make.
Para instalar la herramienta make es necesario ingresar los siguientes comandos desde terminal:
sudo apt update
sudo apt install build-essential make
Luego de instalar la herramienta, es necesario posicionarse en el directorio raíz del proyecto e ingresar el comando make
.
Este, leerá el fichero makefile, almacenará todos los ficheros .o
en el directorio build
, y generará el fichero crud
compilado
en el directorio raíz.
Teniendo compilado el proyecto, basta con posicionarse en el directorio raíz desde terminal y ejecutar el programa. Esto se logra con el siguiente comando:
./crud
Un aspecto a tener en cuenta es que si al ejecutar el crud, no se encuentra el servicio de mysql activo, se lanzará una excepción del siguiente estilo:
Error de MySQL: 2003 - Can't connect to MySQL server on 'localhost' (111)
-
Sistema Operativo:
- Ubuntu 18.04.6 LTS
-
Compilador:
- g++ (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0
-
Herramientas:
- C++14 (versión que utiliza el compilador)
- mysql Ver 14.14 Distrib 5.7.42, for Linux (x86_64) using EditLine wrapper
- GNU Make 4.1
-
Librerías estándar de C++:
-
iostream: proporciona las funcionalidades de entrada y salida de datos, como la lectura y escritura en la consola.
-
string: proporciona funciones para manejar cadenas de caracteres de forma segura y eficiente.
-
vector: proporciona una implementación de un contenedor de tipo vector, que es una secuencia dinámica de elementos.
-
iomanip: proporciona manipuladores de formato para controlar el formato de la salida, como setw() para especificar el ancho de campo.
-
memory: proporciona componentes para el manejo de memoria, como la gestión de punteros inteligentes con unique_ptr y shared_ptr.
-
-
Librerías relacionadas con MySQL:
-
mysql_driver.h
-
mysql_connection.h
-
cppconn/resultset.h
-
cppconn/statement.h
-
cppconn/prepared_statement.h
Estas librerías no forman parte del estándar de C++.
Son parte de la biblioteca de conectividad de MySQL para C++ conocida como "MySQL Connector/C++". Proporcionan las funcionalidades necesarias para conectarse y manipular bases de datos MySQL en C++.
-