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.
- 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‘.
- 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.
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.
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).
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.
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: iPhone, programación, SQLite




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.
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).
hola, pucha quede con las ganas de seguir con esto, pero como puedo hacer para que se conecte a una base de datos remota???