Escrito por Iván Alonso el Lunes 16 de Febrero de 2009

Vamos a escribir una pequeña guía de lo que hace falta para acceder (alta/baja/modificar, la pesadilla de todo consultor) a los datos en una base de datos local en una aplicación iPhone.

Primeramente hemos de crear el archivo al que accederemos, algo que podremos hacer mediante línea de comandos o utilizando un GUI.

  1. Utilizando la línea de comandos, abriremos una sesión de terminal y utilizaremos el comando sqlite3, que estará instalado por defecto con la instalación del iPhone SDK. Utilizaremos los comandos típicos de SQL (para más información, hay que consultar la documentación de SQLite para así entender las diferencias con otros SQL).Recordad que las instrucciones han de terminar en punto y coma y que la instrucción para salir del intérprete de SQLite es ‘.quit‘.
  2. Otra opción es utilizar un interfaz gráfico, que será mucho más cómodo. Para Mac lo mejor que he encontrado es el plugin de Firefox SQLite Manager, que parece dar buen resultado.

Utilizando el método que prefiramos, guardaremos un archivo, que llamaremos objects.sqlite, donde crearemos una tabla llamada objects con tres columnas: id para la clave primaria y name y description para utilizarlas como ejemplo.

CREATE TABLE "objects" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" VARCHAR(32), "description" VARCHAR(256));

No está de más que poblemos la tabla con un par de filas, para tener algo con lo que comprobar si el acceso desde la aplicación es correcto:

INSERT INTO objects (name, description) VALUES ('nombre 1', 'descripcion 1');

Al haber creado objects con una clave autoincremental, podremos comprobar cómo en nuestro archivo también se ha creado una tabla auxiliar llamada sqlite_sequences, donde se almacena cuál es el último valor usado de dicha clave. Esto será transparente para nosotros, pero nunca está de más saberlo.

Una vez creado el archivo, podemos iniciar Xcode y crear nuestro proyecto de prueba para iPhone, que será del tipo Navigation-Based Application, y llamaremos (por ejemplo) Database.

Añadimos el archivo objects.sqlite al proyecto haciendo click con el botón derecho en Resources, Add, Existing Files y seleccionándolo.

Seleccionar archivo existente

Seleccionar archivo existente

Al marcar la opción de Copy items into destination group’s folder, podremos comprobar cómo el archivo se ha copiado hasta la carpeta del proyecto.

Incluir archivo en el proyecto

Incluir archivo en el proyecto

Tras añadir el archivo al proyecto, para poder acceder a él tenemos que añadir las bibliotecas necesarias para disponer del interfaz de acceso a SQLite. Click derecho en Frameworks, Add, Existing Framework. Buscaremos un archivo llamado libsqlite3.0.dylib, aunque encontraremos múltiples versiones, dado que tendremos instalados tantos los frameworks de OS X como los de las distintas versiones aparecidas de iPhoneOS y iPhone Simulator. Seleccionamos la versión más moderna para iPhone OS (en mi caso, a la hora de escribir esto, iPhone OS 2.2.1).

Anadir framework

Anadir framework

Ahora entramos en la parte de programación en sí, creando una clase que almacenará la información que extraigamos de nuestra tabla objects. Botón derecho en Classes, New File, Cocoa Touch Classes, NSObject subclass. En un alarde de originalidad, llamaremos Object.m a este nuevo archivo.

Nuevo archivo

Nuevo archivo

Con esto ya están disponibles todos los elementos que necesitaremos para el proyecto. En el siguiente post explicaré el código a escribir para acceder a esta base de datos que hemos creado.

Etiquetas: , ,

Esta entrada fue escrita el Lunes 16 de Febrero de 2009 a las 10:35 am y está archivada en la categoría Blog. Puedes seguir las respuestas y comentarios en el feed RSS 2.0. Puedes dejar un comentario, o dejar un trackback desde tu propia página.

3 comentarios en “iPhone: Accediendo a una base de datos local SQLite (I)”

  1. nickname pasó por aquí el Sábado 27 de Marzo de 2010 a las 1:27 am, y escribió:

    Oye una pregunta como puedo haceder a esa base de datos desde una aplicación diferente, o ¿solo me sirve una base para una aplicación? o si se pueden compartir las bases de datos entre aplicacones de iphon no estaria mal un ejmplo gracias saludos.

  2. Hola nickname, al final nunca terminé esta serie de posts, pero aún así puedo responderte: no, no puedes utilizar una misma base de datos desde distintas aplicaciones, ya que todas ellas funcionan en el iPhone en un modo “sandbox”, de forma que creen que todo el dispositivo está a su disposición, pero realmente no pueden acceder a los archivos de otras aplicaciones (porque no saben ni que exista más espacio de disco que el que tienen para sí mismas).

  3. edgardo pasó por aquí el Martes 11 de Mayo de 2010 a las 10:37 pm, y escribió:

    hola, pucha quede con las ganas de seguir con esto, pero como puedo hacer para que se conecte a una base de datos remota???

Deja tu comentario