O que é SQLite e por que ele é necessário em C++?
\n\nSQLite é 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\nPara 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\nPrincipais 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
Instalação do SQLite para C++
\n\nA instalação depende do seu sistema operacional e compilador. Veremos três formas principais.
\n\n1. Instalação via gerenciador de pacotes (Linux/macOS)
\n\nUbuntu/Debian:
\nsudo apt-get update\nsudo apt-get install libsqlite3-dev\n\nmacOS (Homebrew):
\nbrew install sqlite3\n\nFedora:
\nsudo dnf install sqlite-devel\n\n2. Instalação no Windows (vcpkg)
\n\nSe você usa vcpkg:
\nvcpkg install sqlite3:x64-windows\nvcpkg integrate install\n\nDepois disso, no Visual Studio você pode incluir #include <sqlite3.h>.
3. Compilação a partir dos fontes (forma universal)
\n\nBaixe os arquivos sqlite3.c e sqlite3.h do site oficial sqlite.org. Em seguida, basta adicioná-los ao seu projeto:
g++ main.cpp sqlite3.c -o myapp -lpthread -ldl\n\nNo Windows, pode ser necessário adicionar -lws2_32.
Início rápido: primeiro programa com SQLite em C++
\n\nVamos 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