SQLite en tu iPhone
11 May 2008
Con la llegada del kit de desarrollo para iPhone (SDK), vimos uno de los componentes, que bajo mi opinión, es de los más importantes de la librería, SQLite.
SQLite es un sistema de bases de datos empotrado, que nos ofrece gran flexibilidad a la hora de realizar aplicaciones que se apoyen en una base de datos. SQLite es de dominio público y multi-plataforma. De hecho, existen muchas maneras de utilizarlo: en entornos embebidos, sitios web, como apoyo a servicios del sistema operativo, en scripts, y en diversas aplicaciones.
SQLite también podría servir como una especie de cache, que mantenga los datos de la configuración, o incluso debido a su compatibilidad binaria entre plataformas podria trabajar como un formato de archivo para alguna aplicacion.
En definitiva, es una muy buena opción para unir datos con aplicaciones y vamos a ver un pequeño ejemplo de como utilizarlo con sencillas sentencias de SQL.
En mi ejemplo, he comenzado creando una sencilla base de datos, para la cual he utilizado la aplicación SQLite Database Browser 1.3 ya que aunque es muy antigua y existen multitud de aplicaciones para tal uso, a mi me gusta porque es muy ligera y muy sencilla de utilizar.

Para poder compilar nuestro proyecto, una vez insertada la base de datos recién creada, es necesario añadir la librería dinámica libsqlite3.0.dylib, que como ya recordarán en anteriores artículos expliqué la forma recomendada de insertarla para no marearnos.
Gracias a dicha librería y a la inclusión del fichero de cabecera #import <sqlite3.h> ya podemos comenzar a trabajar con nuestra base de datos para nuestra aplicación.
La forma de acceder a nuestro fichero de base de datos y abrirlo es de la siguiente manera:
Al igual que hemos usado sqlite3_open para la apertura de nuestra base de datos, existen infinidad de funciones, objetos, constantes, etc, que podemos consultar en su página oficial de SQLite3 http://www.sqlite.org/capi3ref.html.
Una vez abierta, operaciones como la consulta de registros dentro de una tabla son tan sencillas como se muestra a continuación:
sqlite3_stmt almacena una consulta previamente ejecutada, la cual contiene la información solicitada para trabajar con los registros devueltos. Dicha información la prepara la función sqlite3_prepare_v2. Cualquier consulta debe ser finalizada y eliminada mediante sqlite3_finalize.
Espero que aprovechéis la flexibilidad y el sencillo manejo de SQLite3 al igual que lo aproveché yo.
SQLite es un sistema de bases de datos empotrado, que nos ofrece gran flexibilidad a la hora de realizar aplicaciones que se apoyen en una base de datos. SQLite es de dominio público y multi-plataforma. De hecho, existen muchas maneras de utilizarlo: en entornos embebidos, sitios web, como apoyo a servicios del sistema operativo, en scripts, y en diversas aplicaciones.
SQLite también podría servir como una especie de cache, que mantenga los datos de la configuración, o incluso debido a su compatibilidad binaria entre plataformas podria trabajar como un formato de archivo para alguna aplicacion.
En definitiva, es una muy buena opción para unir datos con aplicaciones y vamos a ver un pequeño ejemplo de como utilizarlo con sencillas sentencias de SQL.
En mi ejemplo, he comenzado creando una sencilla base de datos, para la cual he utilizado la aplicación SQLite Database Browser 1.3 ya que aunque es muy antigua y existen multitud de aplicaciones para tal uso, a mi me gusta porque es muy ligera y muy sencilla de utilizar.

Para poder compilar nuestro proyecto, una vez insertada la base de datos recién creada, es necesario añadir la librería dinámica libsqlite3.0.dylib, que como ya recordarán en anteriores artículos expliqué la forma recomendada de insertarla para no marearnos.
Gracias a dicha librería y a la inclusión del fichero de cabecera #import <sqlite3.h> ya podemos comenzar a trabajar con nuestra base de datos para nuestra aplicación.
La forma de acceder a nuestro fichero de base de datos y abrirlo es de la siguiente manera:
-(BOOL)openDatabaseAtPath:(NSString*)path
{
NSFileManager *fileManager = [NSFileManager defaultManager];
//comprobamos si el fichero existe
if([fileManager fileExistsAtPath:path])
{
if(sqlite3_open([path UTF8String], &db) == SQLITE_OK)
{
NSLog(@"Base de datos abierta en %@", path);
dbOpened = YES;
return YES;
}
}
NSLog(@"Base de datos no localizada en %@", path);
return NO;
}
Al igual que hemos usado sqlite3_open para la apertura de nuestra base de datos, existen infinidad de funciones, objetos, constantes, etc, que podemos consultar en su página oficial de SQLite3 http://www.sqlite.org/capi3ref.html.
Una vez abierta, operaciones como la consulta de registros dentro de una tabla son tan sencillas como se muestra a continuación:
-(int)volumeIsIndexed:(NSString*)volumnName
{
if(!dbOpened)
return NO;
const char *sql = [[NSString stringWithFormat:@"SELECT volumeID FROM volumes WHERE volumeName ='%@'", volumnName] cStringUsingEncoding:NSUTF8StringEncoding];
sqlite3_stmt *statement;
BOOL ret;
if (sqlite3_prepare_v2(db, sql, -1, &statement, NULL) == SQLITE_OK)
{
int result = sqlite3_step(statement);
if(result == SQLITE_ROW)
ret = sqlite3_column_int(statement, 0);
else
ret = NO;
}
sqlite3_finalize(statement);
return ret;
}
sqlite3_stmt almacena una consulta previamente ejecutada, la cual contiene la información solicitada para trabajar con los registros devueltos. Dicha información la prepara la función sqlite3_prepare_v2. Cualquier consulta debe ser finalizada y eliminada mediante sqlite3_finalize.
Espero que aprovechéis la flexibilidad y el sencillo manejo de SQLite3 al igual que lo aproveché yo.

Comentarios recientes
En que path del iPhone conviene poner una DB para usar con QLite ?
me ekivoke en el post es LIBROS de sqlite con el iphone para desarrollo de aplicaciones
podrias poner un comentario de donde conseguir lobros de sqlite con iphone
Deja un comentario