|     Inicio    |   |         |  |   FOROS      |  |      |      
   Elastix - VoIP B4A (Basic4Android) App inventor 2 PHP - MySQL
  Estación meteorológica B4J (Basic4Java) ADB Shell - Android Arduino
   AutoIt (Programación) Visual Basic Script (VBS) FireBase (BD autoactualizable) NodeMCU como Arduino
  Teleco - Emisora de A.M. Visual Basic Cosas de Windows Webs interesantes
Translate:
Búsqueda en este sitio:


Nuevo concurso para España, Argentina, Brasil, Chile, Colombia, Ecuador, México, Perú y Portugal.

B4A en español - Juan Antonio Villalpando
(BASIC4Android)

-- Tutorial de B4A --

Volver al índice del tutorial

____________________________

82.- KeyValueStore.

Esto es un archivo que actúa como base de datos.

Podemos guardar pareja de valores: clave-valor

Los tipos de datos que podemos guardar son letras, números, imágenes bitmap, stream, listas, objetos encriptados...

Para su funcionamiento necesita activar dos librerías: RandomAccessFile y SQL, además debemos agregar un módulo de clase (Class Module) que viene en el ejemplo del foro.

En los foros viene bien explicado con un ejemplo aclaratorio.

Nos puede servir para guardar datos de un día para otro en un archivo, o sea un guardado persistente. Es más simple de utilizar que una base de datos.

___________________________________________________

- Vamos a realizar un ejemplo:

1.- Creamos una nueva aplicación. Marcamos las librerías: RandomAccessFile y SQL
Vamos al foro, bajamos el ejemplo KeyValueStore.zip.

Al abrir el ejemplo observamos la pestaña KeyValueStore, pulsamos y observamos un código, ese código es un Class Module.
Copiamos el contenido de ese módulo.

2.- Vamos a nuestra aplicación, creamos un Módulo de Clase (Project / Add New Module / Class Module) y pegamos ahí el código que hemos copiado.
En el módulo de clase KeyValueStore no haremos ninguna modificación.

3.- En Main pondremos el código que vamos a crear.

Copia y pega
Sub Process_Globals
    Private clave_valor As KeyValueStore
End Sub

Sub Globals

End Sub

Sub Activity_Create(FirstTime As Boolean)
    If FirstTime Then
        clave_valor.Initialize(File.DirRootExternal, "archivo_almacen.sql")
    End If
    ' Vamos a guardar valores
    clave_valor.PutSimple("Nombre", "Juan")
    clave_valor.PutSimple("Apellido", "García")
    clave_valor.PutSimple("Edad", "33")
    clave_valor.PutSimple("Puntuación", "789")
    '''''''''''''''''''''''''''''''''''''''''''
    
    'Ahora vamos a tomar los valores guardados y 
    ' a presentarlos en el Log
    
    Log(clave_valor.GetSimple("Nombre"))
    Log(clave_valor.GetSimple("Apellido"))
    Log(clave_valor.GetSimple("Edad"))
    Log(clave_valor.GetSimple("Puntuación"))
    '''''''''''''''''''''''''''''''''''''''''
    
    ' Supongamos que queremos borrar los valores
'    clave_valor.Remove("Nombre")
'    clave_valor.Remove("Apellido")
'    clave_valor.Remove("Edad")
'    clave_valor.Remove("Puntuación")
    '''''''''''''''''''''''''''''''''''''''''
    
End Sub

Sub Activity_Resume

End Sub

Sub Activity_Pause (UserClosed As Boolean)

End Sub
      

En el código anterior guardamos en archivo_almacen.sql que se encontrará en la SDCard, varias parejas de Clave-Valor.
Las guardamos mediante PutSimple
Las recuperamos mediante GetSimple.

El resultado de esta prueba lo tenemos en el Logs.

Ahora vamos al Símbolo de sistema y copiamos este archivo desde el emulador a una carpeta de nuestro ordenador,
y escribimos adb -e pull "/mnt/sdcard/archivo_almacen.sql (ver tutorial de linux en android)

Habremos copiado ese archivo a esa carpeta de nuestro ordenador

Ese archivo en realidad es una base de datos SQL. Si instalamos en nuestro ordenador el programa, visto en otro tutorial:
sqlitebrowser_200_b1_win.zip (su sitio), podremos ver nuestro archivo_almacen.sql como una sencilla base de datos.

_____________________________________________

Tal como está el programa si pusieramos otro Nombre, Apellido, Edad y Puntuación sobrescribiríamos a los datos que ya tuviéramos en esas claves.

Una forma de evitarlo sería que las claves fueran con su nombre y un número, por ejemplo...

clave_valor.PutSimple("Nombre" & 1, "Juan")
clave_valor.PutSimple("Apellido" & 1, "García")
clave_valor.PutSimple("Edad" & 1, "33")
clave_valor.PutSimple("Puntuación" & 1, "789")

En vez de poner un número podemos poner una variable...

clave_valor.PutSimple("Nombre" & n , "Juan")
clave_valor.PutSimple("Apellido" & n , "García")
clave_valor.PutSimple("Edad" & n , "33")
clave_valor.PutSimple("Puntuación" & n , "789")

_____________________________________________

- Otra manera es mediante Lista

    ' Listas
    Dim Lista As List
    Lista.Initialize
    For n = 1 To 10
        Lista.Add("Elemento" & n)
    Next
    clave_valor.PutObject("Lista", Lista)
    
    ' Obtener Lista almacenada
Dim Lista As List = clave_valor.GetObject("Lista")

_____________________________________________

- Otra forma de poner varios datos en un mismo nombre sería utilizando Type y Map como expliqué en el tutorial:

List, Type y Map

________________________________

- Mi correo:
juana1991@yahoo.com
- KIO4.COM - Política de cookies. Textos e imágenes propiedad del autor:
© Juan A. Villalpando
No se permite la copia de información ni imágenes.
Usamos cookies propias y de terceros que entre otras cosas recogen datos sobre sus hábitos de navegación y realizan análisis de uso de nuestro sitio.
Si continúa navegando consideramos que acepta su uso. Acepto    Más información