Tutorial Sqlite3 con C/C++ en Español

Hola, estube curisiando un poco sobre sqlite3 en c y la verdad es que su documentacion es un desastre por lo que a mi respecta claro…

La verdad es que me costo encontrar informacion sobre su uso y por ese motivo quiero compartirlo aqui.

Primero que nada vamos a instalar sqlite3, yo estoy trabajando en ubuntu, linux.
Abrimos un terminal y ejecutamos

apt-get install sqlite3 sqlite3-dev

y con este comando ya estamos listos para empezar.

Creamos un archivo llamado datos.db y ejecutamos en el terminal
sqlite3 datos.db

Ahora vamos a crear una tabla

create table datos (
    nombre char(25),
    apellido char(25)
);

Y a programar en c y continuo explicando con comentarios 😀

#include <stdio.h> //Printf
#include <sqlite3.h> // Funciones sqlite3

int main(){
    sqlite3 *db; //Creamos el puntero a la base de datos
    sqlite3_stmt *pStmt; //Esta variable se encarga de iterar los datos obtenidos
    int rc = 0;
  
    if(sqlite3_open(«datos.db», &db) != SQLITE_OK){ //Abrimos la base de datos
        //Comprobamos que la conexion fue exitosa si no es asi terminamos la ejecucion
        return 0;
    }
  
    rc = sqlite3_exec(db, «insert into datos values (‘Pedro’, ‘Fashuu’), (‘Fran’, ‘Sinatra’);»,0,0,0); //Ejecutamos una sentencia, en este caso ingresamos dos datos
    if(rc != SQLITE_OK){//Comprobamos ubo algun error al ejecutar la sentencia
  
        printf(«nError al insertar datos en la db»);
        printf(«n[ERROR] %s», sqlite3_errmsg(db)); // Mostramos el error
  
    }
  
    /* Ahora vamos a ver los resultados */
  
    rc = sqlite3_prepare_v2(db, «SELECT rowid,* FROM datos;», -1, &pStmt, NULL); //Preparamos la sentencia a ejecutar
    if(rc != SQLITE_OK){//Comprobamos ubo algun error al ejecutar la sentencia  
        printf(«nError al obtener datos de la db»);
        printf(«n[ERROR] %s», sqlite3_errmsg(db)); // Mostramos el error
  
    }else{
        while(SQLITE_ROW == sqlite3_step(pStmt)){ //sqlite3_step devuelve los resultados y sqlite_row comprueba que aya otro valos para iterar
          
            /* Aqui nos encontramos con varias funciones.
            En este ejemplo solo utilizaremos
            sqlite3_column_int – Devuelve el valos numerico obtenido en la columna
            sqlite3_column_text – Devuelve el valos textual obtenido en la columna */
          
            printf(«nID: %d», sqlite3_column_int(pStmt, 0)); // Indicamos que obtenga el valor numerico de la columna 1, que seria rowid
            printf(«nNombre: %s», sqlite3_column_text(pStmt,1)); //
            printf(«nApellido: %s», sqlite3_column_text(pStmt,2)); //
        }
    }
    printf(«n»);
    sqlite3_close(db);//Finalizamos la base de datos
    return 0;
}
PastelBIN: http://pastebin.com/6jSmnXqz
Guardamos el archivo como test.cpp

Finalmente compilamos ejecutando

g++ test.cpp -o test -lsqlite3

Y Listo, se que no fue muy bien explicado pero es muy rebuscado… Espero que les pueda servir de ejemplo. Cualquier cosa consulten, Saludos!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *