Está en la página 1de 32

BlackBerry Java Application SQLite

Versin: 5.0

Gua de desarrollo

Publicado: 2010-04-06 SWD-786836-0406043407-005

Contenido
1 Descripcin general de SQLite.................................................................................................................................................. 2 3 4 5 6 7 7 7 8 8 9 10 11 12 14 15 17 18 19 20 21 23 25 26 27 28 2 Ubicaciones de los archivos de base de datos SQLite........................................................................................................... 3 Prctica recomendada: uso de un explorador de bases de datos SQLite con BlackBerry Smartphone Simulator...... 4 Reduccin del tamao de la base de datos mediante el uso del comando vacuum......................................................... 5 Prctica recomendada: optimizacin del rendimiento de la base de datos SQLite.......................................................... 6 Tareas que admiten el desarrollo de SQLite............................................................................................................................ Simular una tarjeta multimedia..................................................................................................................................................... Desplazarse a un archivo de base de datos SQLite.................................................................................................................... 7 Ejemplos de cdigo..................................................................................................................................................................... Crear una base de datos SQLite.................................................................................................................................................... Ejemplo de cdigo: creacin de una base de datos SQLite....................................................................................................... Ejemplo de cdigo: creacin de una base de datos SQLite cifrada.......................................................................................... Ejemplo de cdigo: adicin de un esquema a una base de datos SQLite................................................................................ Ejemplo de cdigo: insercin de datos de tabla.......................................................................................................................... Ejemplo de cdigo: creacin de una insercin con parmetros................................................................................................ Ejemplo de cdigo: recuperacin de datos de tabla................................................................................................................... Ejemplo de cdigo: eliminacin de datos de tabla..................................................................................................................... Ejemplo de cdigo: actualizacin de datos de tabla................................................................................................................... Ejemplo de cdigo: creacin de una actualizacin con parmetros......................................................................................... Ejemplo de cdigo: eliminacin de una base de datos SQLite.................................................................................................. Ejemplo de cdigo: enumeracin de las tablas de la base de datos......................................................................................... Ejemplo de cdigo: uso de transacciones.................................................................................................................................... 8 Glosario......................................................................................................................................................................................... 9 Comentarios................................................................................................................................................................................. 10 Historial de revisiones del documento..................................................................................................................................... 11 Aviso legal.....................................................................................................................................................................................

Gua de desarrollo

Descripcin general de SQLite

Descripcin general de SQLite

SQLite es una biblioteca de bases de datos relacionales de cdigo abierto. Se ha diseado para efectuar un uso eficaz de los recursos de la memoria e incluye pocas funciones. Como consecuencia, puede resultar una buena eleccin para aplicaciones incrustadas e inalmbricas. Los dispositivos BlackBerry que ejecutan BlackBerry Device Software versin 5.0 o posterior tienen la biblioteca de SQLite integrada en el sistema operativo y en la mquina virtual. La API de SQLite permite desarrollar aplicaciones que usan la base de datos SQLite integrada. Se present en BlackBerry Java Development Environment versin 5.0. El paquete net.rim.device.api.database incluye clases que permiten trabajar con SQLite. Puede utilizar el siguiente planteamiento para trabajar con una base de datos SQLite existente. Cree una instruccin SQL llamando a Database.createStatement(). Prepare la instruccin para ejecutar llamando a Statement.Prepare(). La realizacin de este paso equivale a compilar la instruccin. Ejecute la instruccin llamando a Statement.getCursor() si la instruccin debe devolver resultados o bien llamando a Statement.Execute() en caso contrario. Si hay resultados, recuprelos mediante una iteracin fila a fila en el objeto Database.Cursor devuelto.

Para obtener ms informacin acerca del desarrollo de aplicaciones que utilizan SQLite, consulte la documentacin de SQLite en http://www.sqlite.org y la documentacin sobre API para BlackBerry Java Development Environment.

Gua de desarrollo

Ubicaciones de los archivos de base de datos SQLite

Ubicaciones de los archivos de base de datos SQLite

Cada base de datos SQLite se almacena en un solo archivo. Si slo especifica el nombre de base de datos como valor de parmetro para DatabaseFactory.create(), el archivo de base de datos se crea en la tarjeta SD del dispositivo. La ubicacin predeterminada del archivo de base de datos es /SDCard/databases/<nombre_de_aplicacin>/ . El nombre de la aplicacin que crea la base de datos se incluye en la ruta para evitar conflictos de nombres. Puede crear archivos de base de datos en la memoria del dispositivo si especifica la ruta del sistema de archivos correspondiente. Tipo de memoria tarjeta SD device memory default Ruta del sistema de archivos
/SDCard/ /store/ /SDCard/databases/<nombre_de_aplicacin>

Gua de desarrollo

Prctica recomendada: uso de un explorador de bases de datos SQLite con BlackBerry Smartphone Simulator

Prctica recomendada: uso de un explorador de bases de datos SQLite con BlackBerry Smartphone Simulator

Al desarrollar una aplicacin que utilice una base de datos SQLite, puede resultar til trabajar en un entorno de desarrollo que le permita ejecutar una instruccin SQL y examinar los cambios de datos resultantes en la base de datos. Una forma cmoda de establecer un entorno de desarrollo de ese tipo consiste en almacenar la base de datos en la tarjeta SD durante el desarrollo. A medida que desarrolla la aplicacin, puede ejecutarla en BlackBerry Smartphone Simulator para comprobar la funcionalidad recin agregada. BlackBerry Smartphone Simulator almacena los archivos guardados en la tarjeta SD emulada en un directorio especificado del ordenador de desarrollo. Puede utilizar un explorador de bases de datos SQLite para inspeccionar y administrar las bases de datos SQLite que estn almacenadas en el sistema de archivos de su ordenador de escritorio. Puede utilizar BlackBerry Smartphone Simulator para ejecutar la aplicacin y acceder a la base de datos SQLite que utiliza la aplicacin desde el sistema de archivos del escritorio. Puede utilizar el explorador de bases de datos SQLite para desplazarse a la base de datos SQLite que est almacenada en el directorio que BlackBerry Smartphone Simulator utiliza para almacenar los archivos guardados en la tarjeta SD emulada. El uso del explorador de bases de datos para ver la base de datos a medida que se cambia mediante programacin le permite obtener una respuesta en tiempo real de los cambios que la aplicacin est efectuando en la base de datos. Puede almacenar la base de datos en una tarjeta SD. No obstante, los dispositivos de las series BlackBerry Bold Series y BlackBerry Storm Series admiten el almacenamiento de bases de datos SQLite en la memoria interna del dispositivo. Si su aplicacin est diseada para almacenar la base de datos SQLite en la memoria interna del dispositivo, debe implementar la aplicacin de modo que sea fcil modificar el cdigo para cambiar la ubicacin de almacenamiento de la base de datos.

Gua de desarrollo

Reduccin del tamao de la base de datos mediante el uso del comando vacuum

Reduccin del tamao de la base de datos mediante el uso del comando vacuum

Una base de datos SQLite se almacena en un solo archivo. Algunas operaciones de base de datos, como eliminar una tabla o insertar y eliminar datos, provocan que el archivo se fragmente. Puede utilizar el comando vacuum para desfragmentar y reducir el tamao del archivo. El comando vacuum copia toda la informacin necesaria para volver a crear una base de datos en un archivo temporal en la memoria y utiliza dicha informacin para crear un nuevo archivo de base de datos. A medida que el comando crea un nuevo archivo de base de datos, elimina las pginas libres, coloca los datos de tabla de forma contigua y reorganiza la estructura del archivo de base de datos. Si ejecuta el comando vacuum en un dispositivo BlackBerry que no disponga de suficiente memoria para almacenar la informacin temporal necesaria, el comando no se ejecutar debido a un error de memoria insuficiente.

Gua de desarrollo

Prctica recomendada: optimizacin del rendimiento de la base de datos SQLite

Prctica recomendada: optimizacin del rendimiento de la base de datos SQLite


Considere las siguientes directrices:

Para optimizar el rendimiento de una base de datos SQLite en un dispositivo BlackBerry, debe tener en cuenta el diseo de la base de datos y el modo en que su aplicacin utiliza la API de SQLite para interactuar con la base de datos.

Almacene los menos datos posibles. SQLite guarda en cach las pginas de la base de datos a las que se accede con frecuencia. Al almacenar menos datos, puede aumentar la probabilidad de que la biblioteca de SQLite recupere los datos de la cach ms rpidamente en vez de hacerlo de la memoria flash relativamente lenta. Utilice tablas temporales. Realice esta operacin nicamente si no necesita que los datos estn disponibles despus de un restablecimiento del dispositivo BlackBerry. Prepare instrucciones genricas que usen variables con nombre. Ejecute las instrucciones cuando se requiera mediante la integracin de los valores de variable y la vinculacin de los valores a las variables con nombre en cada iteracin. Utilice transacciones explcitas. De lo contrario, una transaccin empieza antes de que se ejecute cada instruccin y termina despus de que se ejecute la instruccin. Este procedimiento no es eficaz. Requiere que se abra, se vuelva abrir, se escriba y se cierre el archivo de diario para cada instruccin. Evite las subconsultas. De forma predeterminada, la biblioteca de SQLite almacena los resultados de la subconsulta en un archivo temporal.

Gua de desarrollo

Tareas que admiten el desarrollo de SQLite

Tareas que admiten el desarrollo de SQLite


Simular una tarjeta multimedia

Para probar las aplicaciones de base de datos SQLite en BlackBerry Smartphone Simulator, tendr que configurar el simulador para que emule una tarjeta multimedia. De forma predeterminada, los archivos de base de datos se almacenan en una tarjeta multimedia. 1. Cree una carpeta en el ordenador a fin de almacenar los archivos de emulacin para la tarjeta multimedia. 2. En el men Simulate (Simular), haga clic en Change SD Card (Cambiar tarjeta SD). 3. Haga clic en Add Directory (Agregar directorio). 4. Desplcese a la carpeta que ha creado y haga clic en ella. 5. Haga clic en OK (Aceptar). 6. Haga clic en Close (Cerrar). El simulador agrega archivos a la carpeta y comienza a emular una tarjeta multimedia. Si restablece el simulador, debe reiniciar la simulacin de la tarjeta multimedia.

Desplazarse a un archivo de base de datos SQLite


Para comprobar que ha creado correctamente una nueva base de datos SQLite, puede desplazarse a la ubicacin donde espera encontrar el archivo mediante la funcionalidad de exploracin de la aplicacin multimedia. Cada base de datos SQLite se almacena en un solo archivo. 1. 2. 3. En la aplicacin multimedia, pulse la tecla Menu (Men). Haga clic en Explore (Explorar). Desplcese a la carpeta que debe contener el archivo de base de datos para comprobar que el archivo de base de datos est en esa carpeta.

Gua de desarrollo

Ejemplos de cdigo

Ejemplos de cdigo
Crear una base de datos SQLite
1. Importe las bibliotecas necesarias.
import import import import import net.rim.device.api.ui.*; net.rim.device.api.ui.component.*; net.rim.device.api.ui.container.*; net.rim.device.api.database.*; net.rim.device.api.io.*;

2.

Cree el marco de la aplicacin ampliando la clase FullScreen. Esta clase representa su aplicacin. Proporcione un mtodo main() para la nueva clase. En el mtodo main(), cree una instancia de la nueva clase e invoque el mtodo enterEventDispatcher() para activar la aplicacin que recibir los eventos. Proporcione un constructor para la nueva clase. En el constructor, llame al mtodo pushScreen para mostrar la pantalla personalizada de la aplicacin.
public class CreateDatabase extends UiApplication { public static void main(String[] args) { CreateDatabase theApp = new CreateDatabase(); theApp.enterEventDispatcher(); } public CreateDatabase() { pushScreen(new CreateDatabaseScreen()); } }

3.

Cree la pantalla de la aplicacin ampliando la clase MainScreen. Proporcione un constructor para la nueva clase. En el constructor, cree el ttulo de la pantalla mediante un objeto LabelField y mustrelo invocando el mtodo setTitle (). Invoque el mtodo add() para mostrar un campo de texto en la pantalla.
class CreateDatabaseScreen extends MainScreen { public CreateDatabaseScreen() { LabelField title = new LabelField("SQLite Create Database Sample", LabelField.ELLIPSIS | LabelField.USE_ALL_WIDTH); setTitle(title); add(new RichTextField("Creating a database called " +

Gua de desarrollo

Ejemplo de cdigo: creacin de una base de datos SQLite

"MyTestDatabase.db on the SDCard."));

4.

Cree un URI que represente el archivo de base de datos invocando el mtodo create() de la clase URI. Invoque el mtodo create() de la clase DatabaseFactory para crear la base de datos que corresponde al URI que ha creado.
try {

} catch ( Exception e ) { System.out.println( e.getMessage() ); e.printStackTrace(); }

URI myURI = URI.create("file:///SDCard/Databases/SQLite_Guide/" + "MyTestDatabase.db"); DatabaseFactory.create(myURI);

Cree una base de datos SQLite en la tarjeta SD del dispositivo BlackBerry. Si no especifica la ruta completa a la base de datos que se va a crear, se crear en una carpeta designada despus de la aplicacin. Despus de terminar: Puede utilizar la funcionalidad de exploracin de la aplicacin multimedia para comprobar que la base de datos se ha creado.

Ejemplo de cdigo: creacin de una base de datos SQLite


/* * CreateDatabase.java * * Research In Motion Limited proprietary and confidential * Copyright Research In Motion Limited, 2010 */ import net.rim.device.api.ui.*; import net.rim.device.api.ui.component.*; import net.rim.device.api.ui.container.*; import net.rim.device.api.database.*; import net.rim.device.api.io.*; public class CreateDatabase extends UiApplication { public static void main(String[] args) { CreateDatabase theApp = new CreateDatabase(); theApp.enterEventDispatcher(); } public CreateDatabase() {

Gua de desarrollo

Ejemplo de cdigo: creacin de una base de datos SQLite cifrada

} class CreateDatabaseScreen extends MainScreen { Database d; public CreateDatabaseScreen() { LabelField title = new LabelField("SQLite Create Database Sample", LabelField.ELLIPSIS | LabelField.USE_ALL_WIDTH); setTitle(title); add(new RichTextField("Creating a database called " + "MyTestDatabase.db on the SDCard.")); try { URI myURI = URI.create("file:///SDCard/Databases/SQLite_Guide/" + "MyTestDatabase.db"); d = DatabaseFactory.create(myURI); d.close(); } catch ( Exception e ) { System.out.println( e.getMessage() ); e.printStackTrace(); } } }

pushScreen(new CreateDatabaseScreen());

Ejemplo de cdigo: creacin de una base de datos SQLite cifrada


/* CreateEncryptedDatabase.java * * Research In Motion Limited proprietary and confidential * Copyright Research In Motion Limited, 2010 */ import net.rim.device.api.ui.*; import net.rim.device.api.ui.component.*; import net.rim.device.api.ui.container.*; import net.rim.device.api.database.*; import net.rim.device.api.io.*; public class CreateEncryptedDatabase extends UiApplication { public static void main(String[] args) { CreateEncryptedDatabase theApp = new CreateEncryptedDatabase(); theApp.enterEventDispatcher(); }

10

Gua de desarrollo

Ejemplo de cdigo: adicin de un esquema a una base de datos SQLite

} class CreateEncryptedDatabaseScreen extends MainScreen { Database d; public CreateEncryptedDatabaseScreen() { LabelField title = new LabelField("SQLite Create Encrypted Database Sample", LabelField.ELLIPSIS | LabelField.USE_ALL_WIDTH); setTitle(title); add(new RichTextField("Creating an encrypted database called " + "MyEncryptedDatabase.db on the SDCard.")); try { URI myURI = URI.create("file:///SDCard/Databases/SQLite_Guide/" + "MyEncryptedDatabase.db"); DatabaseSecurityOptions dbso = new DatabaseSecurityOptions(true); d = DatabaseFactory.create(myURI,dbso); d.close(); } catch ( Exception e ) { System.out.println( e.getMessage() ); e.printStackTrace(); } } }

public CreateEncryptedDatabase() { pushScreen(new CreateEncryptedDatabaseScreen()); }

Ejemplo de cdigo: adicin de un esquema a una base de datos SQLite


/* * CreateDatabaseSchema.java * * Research In Motion Limited proprietary and confidential * Copyright Research In Motion Limited, 2010 */ import net.rim.device.api.ui.*; import net.rim.device.api.ui.component.*; import net.rim.device.api.ui.container.*; import net.rim.device.api.database.*; import net.rim.device.api.io.*; public class CreateDatabaseSchema extends UiApplication { public static void main(String[] args)

11

Gua de desarrollo

Ejemplo de cdigo: insercin de datos de tabla

} class CreateDatabaseSchemaScreen extends MainScreen { Database d; public CreateDatabaseSchemaScreen() { LabelField title = new LabelField("SQLite Create " + "Database Schema Sample", LabelField.ELLIPSIS | LabelField.USE_ALL_WIDTH); setTitle(title); add(new RichTextField("Adding a table to a database called " + "MyTestDatabase.db on the SDCard.")); try { URI myURI = URI.create("/SDCard/Databases/SQLite_Guide/" + "MyTestDatabase.db"); d = DatabaseFactory.open(myURI); Statement st = d.createStatement( "CREATE TABLE 'People' ( " + "'Name' TEXT, " + "'Age' INTEGER )" ); st.prepare(); st.execute(); st.close(); d.close(); } catch ( Exception e ) { System.out.println( e.getMessage() ); e.printStackTrace(); } } }

} public CreateDatabaseSchema() { pushScreen(new CreateDatabaseSchemaScreen()); }

CreateDatabaseSchema theApp = new CreateDatabaseSchema(); theApp.enterEventDispatcher();

Ejemplo de cdigo: insercin de datos de tabla


/* * InsertData.java * * Research In Motion Limited proprietary and confidential

12

Gua de desarrollo

Ejemplo de cdigo: insercin de datos de tabla

* Copyright Research In Motion Limited, 2010 */ import net.rim.device.api.ui.*; import net.rim.device.api.ui.component.*; import net.rim.device.api.ui.container.*; import net.rim.device.api.database.*; import net.rim.device.api.io.*; public class InsertData extends UiApplication { public static void main(String[] args) { InsertData theApp = new InsertData(); theApp.enterEventDispatcher(); } public InsertData() { pushScreen(new InsertDataScreen()); } } class InsertDataScreen extends MainScreen { Database d; public InsertDataScreen() { LabelField title = new LabelField("SQLite Insert Data " + "Schema Sample", LabelField.ELLIPSIS | LabelField.USE_ALL_WIDTH); setTitle(title); add(new RichTextField("Attempting to insert data into " + "MyTestDatabase.db on the SDCard.")); try { URI myURI = URI.create("file:///SDCard/Databases/SQLite_Guide/" + "MyTestDatabase.db"); d = DatabaseFactory.open(myURI); Statement st = d.createStatement("INSERT INTO People(Name,Age) " + "VALUES ('John',37)"); st.prepare(); st.execute(); st.close(); d.close(); } catch ( Exception e ) { System.out.println( e.getMessage() ); e.printStackTrace(); } } }

13

Gua de desarrollo

Ejemplo de cdigo: creacin de una insercin con parmetros

Ejemplo de cdigo: creacin de una insercin con parmetros


/* * ParameterizedInsert.java * * Research In Motion Limited proprietary and confidential * Copyright Research In Motion Limited, 2010 */ import net.rim.device.api.ui.*; import net.rim.device.api.ui.component.*; import net.rim.device.api.ui.container.*; import net.rim.device.api.database.*; import net.rim.device.api.io.*; import java.util.*; public class ParameterizedInsert extends UiApplication { public static void main(String[] args) { ParameterizedInsert theApp = new ParameterizedInsert(); theApp.enterEventDispatcher(); } public ParameterizedInsert() { pushScreen(new ParameterizedInsertScreen()); } } class ParameterizedInsertScreen extends MainScreen { Database d; public ParameterizedInsertScreen() { LabelField title = new LabelField("SQLite Insert Data " + "Schema Sample", LabelField.ELLIPSIS | LabelField.USE_ALL_WIDTH); setTitle(title); add(new RichTextField("Attempting to insert data into " + "MyTestDatabase.db on the SDCard.")); try { URI myURI = URI.create("file:///SDCard/Databases/SQLite_Guide/" + "MyTestDatabase.db"); d = DatabaseFactory.open(myURI); Statement st = d.createStatement("INSERT INTO People(Name,Age) " + "VALUES (?,?)"); st.prepare(); Hashtable ht = new Hashtable(4); ht.put("Sophie", new Integer(6));

14

Gua de desarrollo

Ejemplo de cdigo: recuperacin de datos de tabla

} }

} catch ( Exception e ) { System.out.println( e.getMessage() ); e.printStackTrace(); }

ht.put("Karen", new Integer(3)); ht.put("Kevin", new Integer(82)); ht.put("Cindy", new Integer(12)); Enumeration names = ht.keys(); Enumeration ages = ht.elements(); while (names.hasMoreElements()) { String strName = (String)names.nextElement(); Integer iAge = (Integer)ages.nextElement(); st.bind(1,strName); st.bind(2,iAge.intValue()); st.execute(); st.reset(); } st.close(); d.close();

Ejemplo de cdigo: recuperacin de datos de tabla


/* * ReadData.java * * Research In Motion Limited proprietary and confidential * Copyright Research In Motion Limited, 2010 */ import net.rim.device.api.ui.*; import net.rim.device.api.ui.component.*; import net.rim.device.api.ui.container.*; import net.rim.device.api.database.*; import net.rim.device.api.io.*; public class ReadData extends UiApplication { public static void main(String[] args) { ReadData theApp = new ReadData(); theApp.enterEventDispatcher(); } public ReadData() { pushScreen(new ReadDataScreen());

15

Gua de desarrollo

Ejemplo de cdigo: recuperacin de datos de tabla

} } class ReadDataScreen extends MainScreen { Database d; public ReadDataScreen() { LabelField title = new LabelField("SQLite Read Table Data Sample", LabelField.ELLIPSIS | LabelField.USE_ALL_WIDTH); setTitle(title); add(new RichTextField("Attempting to retrieve data from " + "MyTestDatabase.db on the SDCard.")); try { URI myURI = URI.create("file:///SDCard/Databases/SQLite_Guide/" + "MyTestDatabase.db"); d = DatabaseFactory.open(myURI); Statement st = d.createStatement("SELECT Name,Age FROM People"); st.prepare(); net.rim.device.api.database.Cursor c = st.getCursor(); Row r; int i = 0; while(c.next()) { r = c.getRow(); i++; add(new RichTextField(i + ". Name = " + r.getString(0) + " , " + "Age = " + r.getInteger(1))); } if (i==0) { add(new RichTextField("No data in the People table.")); } st.close(); d.close(); } catch ( Exception e ) { System.out.println( e.getMessage() ); e.printStackTrace(); } } }

16

Gua de desarrollo

Ejemplo de cdigo: eliminacin de datos de tabla

Ejemplo de cdigo: eliminacin de datos de tabla


/* * DeleteData.java * * Research In Motion Limited proprietary and confidential * Copyright Research In Motion Limited, 2010 */ import net.rim.device.api.ui.*; import net.rim.device.api.ui.component.*; import net.rim.device.api.ui.container.*; import net.rim.device.api.database.*; import net.rim.device.api.io.*; public class DeleteData extends UiApplication { public static void main(String[] args) { DeleteData theApp = new DeleteData(); theApp.enterEventDispatcher(); } public DeleteData() { pushScreen(new DeleteDataScreen()); } } class DeleteDataScreen extends MainScreen { Database d; public DeleteDataScreen() { LabelField title = new LabelField("SQLite Delete Database Data", LabelField.ELLIPSIS | LabelField.USE_ALL_WIDTH); setTitle(title); add(new RichTextField("Attempting to delete data from " + "MyTestDatabase.db on the SDCard.")); try { URI myURI = URI.create("file:///SDCard/Databases/SQLite_Guide/" + "MyTestDatabase.db"); d = DatabaseFactory.open(myURI); Statement st = d.createStatement("DELETE People"); st.prepare(); st.execute(); st.close(); d.close(); } catch ( Exception e )

17

Gua de desarrollo

Ejemplo de cdigo: actualizacin de datos de tabla

{ }

System.out.println( e.getMessage() ); e.printStackTrace();

Ejemplo de cdigo: actualizacin de datos de tabla


/* * UpdateData.java * * Research In Motion Limited proprietary and confidential * Copyright Research In Motion Limited, 2010 */ import net.rim.device.api.ui.*; import net.rim.device.api.ui.component.*; import net.rim.device.api.ui.container.*; import net.rim.device.api.database.*; import net.rim.device.api.io.*; public class UpdateData extends UiApplication { public static void main(String[] args) { UpdateData theApp = new UpdateData(); theApp.enterEventDispatcher(); } public UpdateData() { pushScreen(new UpdateDataScreen()); } } class UpdateDataScreen extends MainScreen { Database d; public UpdateDataScreen() { LabelField title = new LabelField("SQLite Update Data Sample", LabelField.ELLIPSIS | LabelField.USE_ALL_WIDTH); setTitle(title); add(new RichTextField("Trying to update data in MyTestDatabase.db.")); try { URI myURI = URI.create("file:///SDCard/Databases/SQLite_Guide/" + "MyTestDatabase.db"); d = DatabaseFactory.open(myURI); Statement st = d.createStatement("UPDATE People SET Age=38 " +

18

Gua de desarrollo

Ejemplo de cdigo: creacin de una actualizacin con parmetros

"WHERE Name='John'"); st.prepare(); st.execute(); st.close(); d.close(); } catch ( Exception e ) { System.out.println( e.getMessage() ); e.printStackTrace(); }

Ejemplo de cdigo: creacin de una actualizacin con parmetros


/* * ParameterizedUpdate.java * * Research In Motion Limited proprietary and confidential * Copyright Research In Motion Limited, 2010 */ import net.rim.device.api.ui.*; import net.rim.device.api.ui.component.*; import net.rim.device.api.ui.container.*; import net.rim.device.api.database.*; import net.rim.device.api.io.*; import java.util.*; public class ParameterizedUpdate extends UiApplication { public static void main(String[] args) { ParameterizedUpdate theApp = new ParameterizedUpdate(); theApp.enterEventDispatcher(); } public ParameterizedUpdate() { pushScreen(new ParameterizedUpdateScreen()); } } class ParameterizedUpdateScreen extends MainScreen { Database d; public ParameterizedUpdateScreen() { LabelField title = new LabelField("SQLite Parameterized Update Sample", LabelField.ELLIPSIS | LabelField.USE_ALL_WIDTH);

19

Gua de desarrollo

Ejemplo de cdigo: eliminacin de una base de datos SQLite

} catch ( Exception e ) { System.out.println( e.getMessage() ); e.printStackTrace(); }

setTitle(title); add(new RichTextField("Attempting to update data in " + "MyTestDatabase.db on the SDCard.")); try { URI myURI = URI.create("file:///SDCard/Databases/SQLite_Guide/" + "MyTestDatabase.db"); d = DatabaseFactory.open(myURI); Statement st = d.createStatement("UPDATE People SET Age=? WHERE Name=?"); st.prepare(); Hashtable ht = new Hashtable(2); ht.put("Sophie", new Integer(10)); ht.put("Karen", new Integer(7)); Enumeration names = ht.keys(); Enumeration ages = ht.elements(); while (names.hasMoreElements()) { Integer iAge = (Integer)ages.nextElement(); String strName = (String)names.nextElement(); st.bind(1,iAge.intValue()); st.bind(2,strName); st.execute(); st.reset(); } st.close(); d.close();

Ejemplo de cdigo: eliminacin de una base de datos SQLite


/* * DeleteDatabase.java * * Research In Motion Limited proprietary and confidential * Copyright Research In Motion Limited, 2010 */ import net.rim.device.api.ui.*; import net.rim.device.api.ui.component.*; import net.rim.device.api.ui.container.*; import net.rim.device.api.database.*; import net.rim.device.api.io.*;

20

Gua de desarrollo

Ejemplo de cdigo: enumeracin de las tablas de la base de datos

public class DeleteDatabase extends UiApplication { public static void main(String[] args) { DeleteDatabase theApp = new DeleteDatabase(); theApp.enterEventDispatcher(); } public DeleteDatabase() { pushScreen(new DeleteDatabaseScreen()); } } class DeleteDatabaseScreen extends MainScreen { Database d; public DeleteDatabaseScreen() { LabelField title = new LabelField("SQLite Delete Database Sample", LabelField.ELLIPSIS | LabelField.USE_ALL_WIDTH); setTitle(title); add(new RichTextField("Deleting a database called " + "MyTestDatabase.db on the SDCard.")); try { URI myURI = URI.create("file:///SDCard/Databases/SQLite_Guide/" + "MyTestDatabase.db"); DatabaseFactory.delete(myURI); } catch ( Exception e ) { System.out.println( e.getMessage() ); e.printStackTrace(); } } }

Ejemplo de cdigo: enumeracin de las tablas de la base de datos


/* * ListTables.java * * Research In Motion Limited proprietary and confidential * Copyright Research In Motion Limited, 2010 */ import net.rim.device.api.ui.*; import net.rim.device.api.ui.component.*; import net.rim.device.api.ui.container.*;

21

Gua de desarrollo

Ejemplo de cdigo: enumeracin de las tablas de la base de datos

import net.rim.device.api.database.*; import net.rim.device.api.io.*; public class ListTables extends UiApplication { public static void main(String[] args) { ListTables theApp = new ListTables(); theApp.enterEventDispatcher(); } public ListTables() { pushScreen(new ListTablesScreen()); } } class ListTablesScreen extends MainScreen { Database d; public ListTablesScreen() { LabelField title = new LabelField("SQLite List Database Tables", LabelField.ELLIPSIS | LabelField.USE_ALL_WIDTH); setTitle(title); add(new RichTextField("Attempting to list tables in " + "MyTestDatabase.db on the SDCard.")); try { URI myURI = URI.create("file:///SDCard/Databases/SQLite_Guide/" + "MyTestDatabase.db"); d = DatabaseFactory.open(myURI); Statement st = d.createStatement("SELECT name FROM " + " sqlite_master " + "WHERE type='table'" + "ORDER BY name"); st.prepare(); net.rim.device.api.database.Cursor c = st.getCursor(); Row r; int i = 0; while(c.next()) { r = c.getRow(); i++; add(new RichTextField(i + ". Table: " + r.getString(0))); } if (i==0) { add(new RichTextField("There are no tables " + " in the MyTestDatabase database.")); } st.close(); d.close(); }

22

Gua de desarrollo

Ejemplo de cdigo: uso de transacciones

catch ( Exception e ) { System.out.println( e.getMessage() ); e.printStackTrace(); }

Ejemplo de cdigo: uso de transacciones


/* * UsingTransactions.java * * Research In Motion Limited proprietary and confidential * Copyright Research In Motion Limited, 2010 */ import net.rim.device.api.ui.*; import net.rim.device.api.ui.component.*; import net.rim.device.api.ui.container.*; import net.rim.device.api.database.*; import net.rim.device.api.io.*; public class UsingTransactions extends UiApplication { public static void main(String[] args) { UsingTransactions theApp = new UsingTransactions(); theApp.enterEventDispatcher(); } public UsingTransactions() { } } class UsingTransactionsScreen extends MainScreen { Database d; public UsingTransactionsScreen() { LabelField title = new LabelField("SQLite Using Transactions Sample", LabelField.ELLIPSIS | LabelField.USE_ALL_WIDTH); setTitle(title); add(new RichTextField("Trying to update data in a single transaction in MyTestDatabase.db.")); try { URI myURI = URI.create("file:///SDCard/Databases/SQLite_Guide/" + "MyTestDatabase.db"); d = DatabaseFactory.open(myURI);

23

Gua de desarrollo

Ejemplo de cdigo: uso de transacciones

} catch ( Exception e ) { System.out.println( e.getMessage() ); e.printStackTrace(); }

d.beginTransaction(); Statement st = d.createStatement("UPDATE People SET Age=7 " + "WHERE Name='Sophie'"); st.prepare(); st.execute(); st.reset(); st = d.createStatement("UPDATE People SET Age=4 " + "WHERE Name='Karen'"); st.prepare(); st.execute(); d.commitTransaction(); st.close(); d.close();

24

Gua de desarrollo

Glosario

Glosario
API Application Programming Interface (Interfaz de programacin de aplicaciones) SQL Structured Query Language (Lenguaje de consultas estructurado)

25

Gua de desarrollo

Comentarios

Comentarios
Para ofrecer comentarios acerca de este documento, visite www.blackberry.com/docsfeedback.

26

Gua de desarrollo

Historial de revisiones del documento

Historial de revisiones del documento


Fecha 18 de agosto de 2009 Descripcin Se ha agregado un tema acerca del comando VACUUM.

10

27

Gua de desarrollo

Aviso legal

Aviso legal

11

2010 Research In Motion Limited. Todos los derechos reservados. BlackBerry, RIM, Research In Motion, SureType, SurePress y las marcas comerciales, nombres y logotipos relacionados son propiedad de Research In Motion Limited y estn registrados y/o se utilizan en EE.UU. y en diferentes pases del mundo. Java es una marca registrada de Sun Microsystems, Inc. SQLite es una marca comercial de Hipp, Wyrick & Company, Inc. Todas las dems marcas comerciales son propiedad de sus respectivos usuarios. Esta documentacin, incluida cualquier documentacin que se incorpore mediante referencia como documento proporcionado o disponible en www.blackberry.com/go/docs, se proporciona o se pone a disposicin "TAL CUAL" y "SEGN SU DISPONIBILIDAD" sin ninguna condicin, responsabilidad o garanta de ningn tipo por Research In Motion Limited y sus empresas afiliadas ("RIM") y RIM no asume ninguna responsabilidad por los errores tipogrficos, tcnicos o cualquier otra imprecisin, error u omisin contenidos en esta documentacin. Con el fin de proteger la informacin confidencial y propia de RIM, as como los secretos comerciales, la presente documentacin describe algunos aspectos de la tecnologa de RIM en lneas generales. RIM se reserva el derecho a modificar peridicamente la informacin que contiene esta documentacin, si bien tampoco se compromete en modo alguno a proporcionar cambios, actualizaciones, ampliaciones o cualquier otro tipo de informacin que se pueda agregar a esta documentacin. Esta documentacin puede contener referencias a fuentes de informacin, hardware o software, productos o servicios, incluidos componentes y contenido como, por ejemplo, el contenido protegido por copyright y/o sitios Web de terceros (conjuntamente, los "Productos y servicios de terceros"). RIM no controla ni es responsable de ningn tipo de Productos y servicios de terceros, incluido, sin restricciones, el contenido, la exactitud, el cumplimiento de copyright, la compatibilidad, el rendimiento, la honradez, la legalidad, la decencia, los vnculos o cualquier otro aspecto de los Productos y servicios de terceros. La inclusin de una referencia a los Productos y servicios de terceros en esta documentacin no implica que RIM se haga responsable de dichos Productos y servicios de terceros o de dichos terceros en modo alguno. EXCEPTO EN LA MEDIDA EN QUE LO PROHBA ESPECFICAMENTE LA LEY DE SU JURISDICCIN, QUEDAN EXCLUIDAS POR LA PRESENTE TODAS LAS CONDICIONES, APROBACIONES O GARANTAS DE CUALQUIER TIPO, EXPLCITAS O IMPLCITAS, INCLUIDA, SIN NINGN TIPO DE LIMITACIN, CUALQUIER CONDICIN, APROBACIN, GARANTA, DECLARACIN DE GARANTA DE DURABILIDAD, IDONEIDAD PARA UN FIN O USO DETERMINADO, COMERCIABILIDAD, CALIDAD COMERCIAL, ESTADO DE NO INFRACCIN, CALIDAD SATISFACTORIA O TITULARIDAD, O QUE SE DERIVE DE UNA LEY O COSTUMBRE O UN CURSO DE LAS NEGOCIACIONES O USO DEL COMERCIO, O RELACIONADO CON LA DOCUMENTACIN O SU USO O RENDIMIENTO O NO RENDIMIENTO DE CUALQUIER SOFTWARE, HARDWARE, SERVICIO O CUALQUIER PRODUCTO O SERVICIO DE TERCEROS MENCIONADOS AQU. TAMBIN PODRA TENER OTROS DERECHOS QUE VARAN SEGN EL ESTADO O PROVINCIA. ES POSIBLE QUE ALGUNAS JURISDICCIONES NO PERMITAN LA EXCLUSIN O LA LIMITACIN DE GARANTAS IMPLCITAS Y CONDICIONES. EN LA MEDIDA EN QUE LO PERMITA LA LEY, CUALQUIER GARANTA IMPLCITA O CONDICIONES EN RELACIN CON LA DOCUMENTACIN NO SE PUEDEN EXCLUIR TAL Y COMO SE HA EXPUESTO ANTERIORMENTE, PERO PUEDEN SER LIMITADAS, Y POR LA PRESENTE ESTN LIMITADAS A NOVENTA (90) DAS DESDE DE LA FECHA QUE ADQUIRI LA DOCUMENTACIN O EL ELEMENTO QUE ES SUJETO DE LA RECLAMACIN. EN LA MEDIDA MXIMA EN QUE LO PERMITA LA LEY DE SU JURISDICCIN, EN NINGN CASO RIM ASUMIR RESPONSABILIDAD ALGUNA POR CUALQUIER TIPO DE DAOS RELACIONADOS CON ESTA DOCUMENTACIN O SU USO, O RENDIMIENTO O NO RENDIMIENTO DE CUALQUIER SOFTWARE, HARDWARE, SERVICIO O PRODUCTOS Y SERVICIOS

28

Gua de desarrollo

Aviso legal

DE TERCEROS AQU MENCIONADOS INCLUIDOS SIN NINGN TIPO DE LIMITACIN CUALQUIERA DE LOS SIGUIENTES DAOS: DIRECTOS, RESULTANTES, EJEMPLARES, INCIDENTALES, INDIRECTOS, ESPECIALES, PUNITIVOS O AGRAVADOS, DAOS POR PRDIDA DE BENEFICIOS O INGRESOS, IMPOSIBILIDAD DE CONSEGUIR LOS AHORROS ESPERADOS, INTERRUPCIN DE LA ACTIVIDAD COMERCIAL, PRDIDA DE INFORMACIN COMERCIAL, PRDIDA DE LA OPORTUNIDAD DE NEGOCIO O CORRUPCIN O PRDIDA DE DATOS, IMPOSIBILIDAD DE TRANSMITIR O RECIBIR CUALQUIER DATO, PROBLEMAS ASOCIADOS CON CUALQUIER APLICACIN QUE SE UTILICE JUNTO CON PRODUCTOS Y SERVICIOS DE RIM, COSTES DEBIDOS AL TIEMPO DE INACTIVIDAD, PRDIDA DE USO DE LOS PRODUCTOS Y SERVICIOS DE RIM O PARTE DE L O DE CUALQUIER SERVICIO DE USO, COSTE DE SERVICIOS SUSTITUTIVOS, COSTES DE COBERTURA, INSTALACIONES O SERVICIOS, COSTE DEL CAPITAL O CUALQUIER OTRA PRDIDA MONETARIA SIMILAR, TANTO SI DICHOS DAOS SE HAN PREVISTO O NO, Y AUNQUE SE HAYA AVISADO A RIM DE LA POSIBILIDAD DE DICHOS DAOS. EN LA MEDIDA MXIMA EN QUE LO PERMITA LA LEY DE SU JURISDICCIN, RIM NO TENDR NINGN OTRO TIPO DE OBLIGACIN O RESPONSABILIDAD CONTRACTUAL, EXTRACONTRACTUAL O CUALQUIER OTRA, INCLUIDA CUALQUIER RESPONSABILIDAD POR NEGLIGENCIA O RESPONSABILIDAD ESTRICTA. LAS LIMITACIONES, EXCLUSIONES Y DESCARGOS DE RESPONSABILIDAD SE APLICARN: (A) INDEPENDIENTEMENTE DE LA NATURALEZA DE LA CAUSA DE LA ACCIN, DEMANDA O ACCIN SUYA, INCLUIDA PERO NO LIMITADA AL INCUMPLIMIENTO DEL CONTRATO, NEGLIGENCIA, AGRAVIO, EXTRACONTRACTUAL, RESPONSABILIDAD ESTRICTA O CUALQUIER OTRA TEORA DEL DERECHO Y DEBERN SOBREVIVIR A UNO O MS INCUMPLIMIENTOS ESENCIALES O AL INCUMPLIMIENTO DEL PROPSITO ESENCIAL DE ESTE CONTRATO O CUALQUIER SOLUCIN CONTENIDA AQU; Y (B) A RIM Y A SUS EMPRESAS AFILIADAS, SUS SUCESORES, CESIONARIOS, AGENTES, PROVEEDORES (INCLUIDOS LOS PROVEEDORES DE SERVICIOS DE USO), DISTRIBUIDORES AUTORIZADOS POR RIM (INCLUIDOS TAMBIN LOS PROVEEDORES DE SERVICIOS DE USO) Y SUS RESPECTIVOS DIRECTORES, EMPLEADOS Y CONTRATISTAS INDEPENDIENTES. ADEMS DE LAS LIMITACIONES Y EXCLUSIONES MENCIONADAS ANTERIORMENTE, EN NINGN CASO NINGN DIRECTOR, EMPLEADO, AGENTE, DISTRIBUIDOR, PROVEEDOR, CONTRATISTA INDEPENDIENTE DE RIM O CUALQUIER AFILIADO DE RIM ASUMIR NINGUNA RESPONSABILIDAD DERIVADA DE O RELACIONADA CON LA DOCUMENTACIN. Antes de instalar, usar o suscribirse a cualquiera de los Productos y servicios de terceros, es su responsabilidad asegurarse de que su proveedor de servicios de uso ofrezca compatibilidad con todas sus funciones. Puede que algunos proveedores de servicios de uso no ofrezcan las funciones de exploracin de Internet con una suscripcin al servicio BlackBerry Internet Service. Consulte con su proveedor de servicios acerca de la disponibilidad, arreglos de itinerancia, planes de servicio y funciones. La instalacin o el uso de los Productos y servicios de terceros con productos y servicios de RIM puede precisar la obtencin de una o ms patentes, marcas comerciales, derechos de autor u otras licencias para evitar que se vulneren o violen derechos de terceros. Usted es el nico responsable de determinar si desea utilizar Productos y servicios de terceros y si se necesita para ello cualquier otra licencia de terceros. En caso de necesitarlas, usted es el nico responsable de su adquisicin. No instale o utilice Productos y servicios de terceros hasta que se hayan adquirido todas las licencias necesarias. Cualquier tipo de Productos y servicios de terceros que se proporcione con los productos y servicios de RIM se le facilita para su comodidad "TAL CUAL" sin ninguna condicin expresa e implcita, aprobacin, garanta de cualquier tipo por RIM y RIM no sume ninguna responsabilidad en relacin con ello. El uso de los Productos y servicios de terceros se regir y estar sujeto a la aceptacin de los trminos de licencias independientes aplicables en este caso con terceros, excepto en los casos cubiertos expresamente por una licencia u otro acuerdo con RIM. Algunas funciones mencionadas en esta documentacin requieren una versin mnima del software de BlackBerry Enterprise Server, BlackBerry Desktop Software y/o BlackBerry Device Software.

29

Gua de desarrollo

Aviso legal

Los trminos de uso de cualquier producto o servicio de RIM se presentan en una licencia independiente o en otro acuerdo con RIM que se aplica en este caso. NINGUNA PARTE DE LA PRESENTE DOCUMENTACIN EST PENSADA PARA PREVALECER SOBRE CUALQUIER ACUERDO EXPRESO POR ESCRITO O GARANTA PROPORCIONADA POR RIM PARA PARTES DE CUALQUIER PRODUCTO O SERVICIO DE RIM QUE NO SEA ESTA DOCUMENTACIN.

Research In Motion Limited 295 Phillip Street Waterloo, ON N2L 3W8 Canad Research In Motion UK Limited Centrum House 36 Station Road Egham, Surrey TW20 9LF Reino Unido Publicado en Canad

30

También podría gustarte