domingo, 21 de septiembre de 2008

Sqlite con Code::Blocks

Otra de instalaciones!
Esta vez se trata de SQLite, una librería que nos permite manejar datos desde una BBDD dentro de nuestra propia aplicación de una forma muy sencilla.

Con SQLite podemos almacenar y recuperar datos usando sentencias SQL, olvidándonos completamente de las funciones de manejo de archivos y de realizar rutinas de búsqueda de datos (esto último se agradece bastante).

En esta entrada describiré el proceso que seguí para usar SQLite desde Code::Blocks (bajo Windows XP).
He usado Code::Blocks 8.02 para el proceso, y mientras escribo este articulo la versión actual de SQLite es la 3.6.2.

Descargamos los siguientes ficheros desde la página de SQLite:
http://www.sqlite.org/
Precompiled Binaries for Windows
  • sqlite-3_6_2.zip : Esto no nos servirá para usar SQLite con Code::Blocks pero nos será muy útil para debugar, pues con esta aplicación podremos consultar y modificar nuestras bases de datos.
  • sqlitedll-3_6_2.zip : La DLL para windows, sin ella la aplicación compilada no se ejecutará. También fabricaremos la libreria .a para Mingw (el compilador que usa Code::Blocks).
Source Code
  • sqlite-amalgamation-3_6_2.zip: Aqui se encuentra el fichero sqlite3.h que deberemos incluir en nuestra aplicación.

Una vez todo descargado, el primer paso es obtener la libreria en formato .a para poder linkar con nuestro programa.
Descomprimimos el fichero sqlitedll-3_6_2.zip en un directorio y abrimos una línea de comandos.
Nos dirigimos al directorio donde descomprimimos sqlitedll-3_6_2.zip y ejecutamos:

dlltool -D sqlite3.dll -d sqlite3.def -l libsqlite3dll.a

Ahora, crea dentro de tu directorio favorito donde almacenes tus librerias llamado SQLite, y dentro suyo los directorios include y lib.
Yo tengo un directorio donde almaceno todas las librerias que uso habitualmente (C:\libs\), pero puedes omitir este paso y colocar los ficheros en los directorios de Code::Blocks:
X:\{DIRECTORIO_INSTALACION_CODEBLOCKS}\MinGW\include
X:\{DIRECTORIO_INSTALACION_CODEBLOCKS}\MinGW\lib

Bien, descomprime el fichero sqlite-amalgamation-3_6_2.zip dentro del directorio include.
El fichero libsqlite3dll.a colocalo dentro del directorio lib.

Ahora solo nos queda crear el proyecto con Code::Blocks.
Crea un nuevo proyecto,
-"Console application"
-Marca C++ como lenguaje de programación
-Indica el directorio donde guardar el proyecto.

Si NO guardaste los ficheros dentro del directorio de Code::Blocks sigue estos pasos:
-Project/Build options: En el panel de la izquierda marca el nombre del proyecto (no debe estar marcado "debug" ni "release").
-En la pestaña "Linker settings", haz click sobre el botón "Add" y busca el fichero "libsqlite3dll.a" que generamos anteriormente. Con esto Code::Blocks linkara la libreria con nuestro programa.
-En la Pestaña "Search Directories", dentro de la pestaña "Compiler" haz click sobre "Add" y selecciona el directorio "include" donde se descomprimió el fichero sqlite-amalgamation-3_6_2.zip. Así el compilador encontrará el fichero "sqlite3.h"


Si guardaste los ficheros dentro del directorio Code::Blocks:
-Project/Build options: En el panel de la izquierda marca el nombre del proyecto (no debe estar marcado "debug" ni "release").
-En la pestaña "Linker settings", en el cuadro de texto "Other linker options" escribe:
-libsqlite3dll

Bien, para probar que todo funciona correctamente copia el siguiente código y trata de compilarlo:


#include
#include
using namespace std;

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

rc = sqlite3_open("test.db", &db);
if( rc==SQLITE_OK )
{
cout << "Yeah!";
}
sqlite3_close( db );
}

Y eso es todo, mucho más sencillo que con QT y GTK!! Así da gusto.