SQLite pour C++ : guide complet avec exemples

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Qu'est-ce que SQLite et pourquoi l'utiliser en C++ ?

SQLite est une base de données relationnelle légère et embarquée qui ne nécessite aucun processus serveur dédié. Contrairement à MySQL ou PostgreSQL, SQLite travaille directement avec un fichier de base de données sur le disque, ce qui en fait un choix idéal pour les applications de bureau, les appareils mobiles, les systèmes embarqués et les petits projets web.

Pour le langage C++, il existe plusieurs façons de travailler avec SQLite. La plus populaire et la plus stable consiste à utiliser la bibliothèque officielle sqlite3 (API C), fournie sous forme d'un ensemble de fonctions C. Cependant, pour une utilisation plus pratique en C++, on utilise souvent des wrappers comme SQLiteCpp ou sqlite_modern_cpp. Dans cet article, nous nous concentrerons sur l'utilisation directe de l'API C (bibliothèque sqlite3), car cela offre un contrôle maximal et une meilleure compréhension des processus sous-jacents.

Les principaux avantages de SQLite :

  • Zéro configuration : pas besoin d'installer ou de configurer un serveur.
  • Portabilité : la base de données est un seul fichier.
  • Fiabilité : support des transactions (ACID).
  • Vitesse : pour la plupart des opérations, plus rapide que les bases de données client-serveur.
  • Taille : la bibliothèque occupe moins de 600 Ko.

Installation de SQLite pour C++

L'installation dépend de votre système d'exploitation et de votre compilateur. Nous allons voir trois méthodes principales.

1. Installation via le gestionnaire de paquets (Linux/macOS)

Ubuntu/Debian :

sudo apt-get update
sudo apt-get install libsqlite3-dev

macOS (Homebrew) :

brew install sqlite3

Fedora :

sudo dnf install sqlite-devel

2. Installation sur Windows (vcpkg)

Si vous utilisez vcpkg :

vcpkg install sqlite3:x64-windows
vcpkg integrate install

Ensuite, dans Visual Studio, vous pouvez inclure #include <sqlite3.h>.

3. Compilation à partir des sources (méthode universelle)

Téléchargez les fichiers sqlite3.c et sqlite3.h depuis le site officiel sqlite.org. Ajoutez-les ensuite simplement à votre projet :

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

Sous Windows, il peut être nécessaire d'ajouter -lws2_32.

Démarrage rapide : premier programme avec SQLite en C++

Créons une application console simple qui ouvre une base de données, crée une table et insère un enregistrement.

#include <iostream>
#include <sqlite3.h>

int main() {
    sqlite3 *db;
    char *errMsg = 0;

    // 1. Ouvrir (ou créer) la base de données
    int rc = sqlite3_open("test.db", &db);
    if (rc) {
        std::cerr << "Erreur d'ouverture de la BD : " << sqlite3_errmsg(db) << std::endl;
        return 1;
    }

    // 2. Créer la table
    const char *sqlCreate = "CREATE TABLE IF NOT EXISTS users ("
                            "id INTEGER PRIMARY KEY AUTOINCREMENT, "
                            "name TEXT NOT NULL, "
                            "age INTEGER);";

    rc = sqlite3_exec(db, sqlCreate, 0, 0, &errMsg);
    if (rc != SQLITE_OK) {
        std::cerr << "Erreur SQL : " << errMsg << std::endl;
        sqlite3_free(errMsg);
        sqlite3_close(db);
        return 1;
    }

    // 3. Insérer des données
    const char *sqlInsert = "INSERT INTO users (name, age) VALUES ('Alice', 30);";
    rc = sqlite3_exec(db, sqlInsert, 0, 0, &errMsg);
    if (rc != SQLITE_OK) {
        std::cerr << "Erreur d'insertion : " << errMsg << std::endl;
        sqlite3_free(errMsg);
    } else {
        std::cout << "Enregistrement ajouté, ID : " << sqlite3_last_insert_rowid(db) << std                    

Recommendations