Subj : Inital commit of sqlite support. To : GitLab note in main/sbbs From : Fernando Toledo Date : Thu May 08 2025 19:53:28 https://gitlab.synchro.net/main/sbbs/-/merge_requests/538#note_7220 see this example (from chatgpt sorry) for INSERT/CREATE TABLE it-s use exec method and for SELECT use prepare Other libraries I remember, such as using MySQL for PHP, had db.exec() for queries that didn't return results, and db.query() for those that did return rows and iterate through them. ```c++ #include #include int main() { sqlite3 *db; char *errMsg = 0; int rc; // Abrir (o crear) la base de datos rc = sqlite3_open("ejemplo.db", &db); if (rc) { fprintf(stderr, "No se puede abrir la base de datos: %s\n", sqlite3_errmsg(db)); return 1; } else { printf("Base de datos abierta exitosamente\n"); } // Crear tabla const char *sqlCreateTable = "CREATE TABLE IF NOT EXISTS personas (id INTEGER PRIMARY KEY, nombre TEXT);"; rc = sqlite3_exec(db, sqlCreateTable, 0, 0, &errMsg); if (rc != SQLITE_OK) { fprintf(stderr, "Error al crear tabla: %s\n", errMsg); sqlite3_free(errMsg); } // Insertar datos const char *sqlInsert = "INSERT INTO personas (nombre) VALUES ('Juan'), ('Ana');"; rc = sqlite3_exec(db, sqlInsert, 0, 0, &errMsg); if (rc != SQLITE_OK) { fprintf(stderr, "Error al insertar datos: %s\n", errMsg); sqlite3_free(errMsg); } // Consultar datos const char *sqlSelect = "SELECT id, nombre FROM personas;"; sqlite3_stmt *stmt; rc = sqlite3_prepare_v2(db, sqlSelect, -1, &stmt, 0); if (rc == SQLITE_OK) { while (sqlite3_step(stmt) == SQLITE_ROW) { int id = sqlite3_column_int(stmt, 0); const unsigned char *nombre = sqlite3_column_text(stmt, 1); printf("ID: %d, Nombre: %s\n", id, nombre); } } else { fprintf(stderr, "Error al preparar la consulta: %s\n", sqlite3_errmsg(db)); } sqlite3_finalize(stmt); sqlite3_close(db); return 0; } ``` --- þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net .