SQLite para C++: guía completa con ejemplos

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

¿Qué es SQLite y por qué se necesita en C++?

\n\n

SQLite es una base de datos relacional ligera e incrustable que no requiere un proceso de servidor separado. A diferencia de MySQL o PostgreSQL, SQLite trabaja directamente con el archivo de base de datos en el disco, lo que la convierte en una opción ideal para aplicaciones de escritorio, dispositivos móviles, sistemas embebidos y pequeños proyectos web.

\n\n

Para el lenguaje C++, existen varias formas de trabajar con SQLite. La más popular y estable es el uso de la biblioteca oficial sqlite3 (API de C), que se proporciona como un conjunto de funciones en C. Sin embargo, para un trabajo más cómodo en C++, a menudo se utilizan envoltorios como SQLiteCpp o sqlite_modern_cpp. En este artículo nos centraremos en el uso directo de la API de C (biblioteca sqlite3), ya que esto proporciona el máximo control y comprensión de los procesos subyacentes.

\n\n

Principales ventajas de SQLite:

\n
    \n
  • Configuración cero: no es necesario instalar ni configurar un servidor.
  • \n
  • Portabilidad: la base de datos es un solo archivo.
  • \n
  • Confiabilidad: soporte de transacciones (ACID).
  • \n
  • Velocidad: para la mayoría de las operaciones es más rápida que las bases de datos cliente-servidor.
  • \n
  • Tamaño: la biblioteca ocupa menos de 600 KB.
  • \n
\n\n

Instalación de SQLite para C++

\n\n

La instalación depende de su sistema operativo y compilador. Veremos tres métodos principales.

\n\n

1. Instalación mediante gestor de paquetes (Linux/macOS)

\n\n

Ubuntu/Debian:

\n
sudo apt-get update\nsudo apt-get install libsqlite3-dev
\n\n

macOS (Homebrew):

\n
brew install sqlite3
\n\n

Fedora:

\n
sudo dnf install sqlite-devel
\n\n

2. Instalación en Windows (vcpkg)

\n\n

Si usa vcpkg:

\n
vcpkg install sqlite3:x64-windows\nvcpkg integrate install
\n\n

Después de esto, en Visual Studio puede incluir #include <sqlite3.h>.

\n\n

3. Compilación desde el código fuente (método universal)

\n\n

Descargue los archivos sqlite3.c y sqlite3.h del sitio oficial sqlite.org. Luego, simplemente agréguelos a su proyecto:

\n
g++ main.cpp sqlite3.c -o myapp -lpthread -ldl
\n\n

En Windows, puede ser necesario agregar -lws2_32.

\n\n

Inicio rápido: primer programa con SQLite en C++

\n\n

Crearemos una aplicación de consola simple que abre una base de datos, crea una tabla e inserta un registro.

\n\n
#include <iostream>\n#include <sqlite3.h>\n\nint main() {\n    sqlite3 *db;\n    char *errMsg = 0;\n\n    // 1. Abrimos (o creamos) la base de datos\n    int rc = sqlite3_open("test.db", &db);\n    if (rc) {\n        std::cerr << "Error al abrir la BD: " << sqlite3_errmsg(db) << std::endl;\n        return 1;\n    }\n\n    // 2. Creamos la tabla\n    const char *sqlCreate = "CREATE TABLE IF NOT EXISTS users ("\n                            "id INTEGER PRIMARY KEY AUTOINCREMENT, "\n                            "name TEXT NOT NULL, "\n                            "age INTEGER);";\n\n    rc = sqlite3_exec(db, sqlCreate, 0, 0, &errMsg);\n    if (rc != SQLITE_OK) {\n        std::cerr << "Error SQL: " << errMsg << std::endl;\n        sqlite3_free(errMsg);\n        sqlite3_close(db);\n        return 1;\n    }\n\n    // 3. Insertamos datos\n    const char *sqlInsert = "INSERT INTO users (name, age) VALUES ('Alice', 30);";\n    rc = sqlite3_exec(db, sqlInsert, 0, 0, &errMsg);\n    if (rc != SQLITE_OK) {\n        std::cerr << "Error de inserción: " << errMsg << std::endl;\n        sqlite3_free(errMsg);\n    } else {\n        std::cout                    

Recommendations