SQLite para C++: guia completo com exemplos

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

O que é SQLite e por que ele é necessário em C++?

\n\n

SQLite é um banco de dados relacional leve e embutido que não requer um processo de servidor separado. Ao contrário do MySQL ou PostgreSQL, o SQLite trabalha diretamente com o arquivo de banco de dados no disco, tornando-o uma escolha ideal para aplicações desktop, dispositivos móveis, sistemas embarcados e pequenos projetos web.

\n\n

Para a linguagem C++, existem várias formas de trabalhar com SQLite. A mais popular e estável é usar a biblioteca oficial sqlite3 (API C), que é fornecida como um conjunto de funções C. No entanto, para um trabalho mais conveniente em C++, frequentemente são usados wrappers como SQLiteCpp ou sqlite_modern_cpp. Neste artigo, focaremos no uso direto da API C (biblioteca sqlite3), pois isso oferece o máximo controle e compreensão dos processos envolvidos.

\n\n

Principais vantagens do SQLite:

\n
    \n
  • Configuração zero: não é necessário instalar e configurar um servidor.
  • \n
  • Portabilidade: o banco de dados é um único arquivo.
  • \n
  • Confiabilidade: suporte a transações (ACID).
  • \n
  • Velocidade: para a maioria das operações, é mais rápido que bancos de dados cliente-servidor.
  • \n
  • Tamanho: a biblioteca ocupa menos de 600 KB.
  • \n
\n\n

Instalação do SQLite para C++

\n\n

A instalação depende do seu sistema operacional e compilador. Veremos três formas principais.

\n\n

1. Instalação via gerenciador de pacotes (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. Instalação no Windows (vcpkg)

\n\n

Se você usa vcpkg:

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

Depois disso, no Visual Studio você pode incluir #include <sqlite3.h>.

\n\n

3. Compilação a partir dos fontes (forma universal)

\n\n

Baixe os arquivos sqlite3.c e sqlite3.h do site oficial sqlite.org. Em seguida, basta adicioná-los ao seu projeto:

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

No Windows, pode ser necessário adicionar -lws2_32.

\n\n

Início rápido: primeiro programa com SQLite em C++

\n\n

Vamos criar um aplicativo de console simples que abre um banco de dados, cria uma tabela e insere um registro.

\n\n
#include <iostream>\n#include <sqlite3.h>\n\nint main() {\n    sqlite3 *db;\n    char *errMsg = 0;\n\n    // 1. Abre (ou cria) o banco de dados\n    int rc = sqlite3_open("test.db", &db);\n    if (rc) {\n        std::cerr << "Erro ao abrir o BD: " << sqlite3_errmsg(db) << std::endl;\n        return 1;\n    }\n\n    // 2. Cria a tabela\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 << "Erro SQL: " << errMsg << std::endl;\n        sqlite3_free(errMsg);\n        sqlite3_close(db);\n        return 1;\n    }\n\n    // 3. Insere dados\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 << "Erro ao inserir: " << errMsg << std::endl;\n        sqlite3_free(errMsg);\n    } else {\n        std::cout                    

Recommendations