Spanish Alternativas de almacenamiento en B4X?

Jean Hendrickx

Member
Licensed User
Hola amigos, gracias a su colaboracion, ya tengo un panel operativo, con varios datos; ahora necesito guardarloen disco para su posterior uso/procesamiento. Y aqui se me presenta el dilema; en mi lenguaje anterior sólo tenia dos alternativas: Las tablas o archivos nativos (Residentes en el disco, no habia que instalar más nada, rápido acceso, flexibilidad, disponibles en Windows o Linux que eran las plataformas donde corria el lenguaje) y las Bases de Datos externas (MySQL, SQLLite, ODBC y otras), donde obviamente habia que instalar otros programas. Que altenativas existen en B4X? Concretamente, y por ahora, me interesa el entorno Windows -B4J- (Suponiendo que estoy reemplazando Visual BASIC o similar con B4J)? Hay algun sistema nativo de tablas o archivos? O Debo irme obligatoriamente a Bases de Datos?
 

roerGarcia

Active Member
Licensed User
Longtime User
Puedes usar sqlite, es una base de datos sql embebida, facil de usar, busca en su pagina web.
Por otro lado, puedes usar mysql mediante jrdc2 - libreria de b4x, simplifica mucho las cosas y es sql simple.
Busca ejemplos en el foro con sqlite o mysql o mssql y veras que hay mucho de donde escoger y todo esta documentado y explicado.

Yo uso mysql con windows / b4j - jrdc2 - mysql, excelente desempeño.

Saludos
PD Muestra de codigo que usa sqlite en b4a (tomado del foro y adaptado)

Ejemplo:
Sub CreateTable
  Log("Create Table")
  strQuery="DROP TABLE IF EXISTS Palabras"
  SQL1.ExecNonQuery(strQuery)
 
  strQuery="CREATE TABLE IF NOT EXISTS Palabras (pId INTEGER, pFrec TEXT, pAlf TEXT)"
  SQL1.ExecNonQuery(strQuery)
 
  strQuery="INSERT INTO Palabras VALUES (?,?,?)"
  'We are not initializing the list because it just holds the list that returns from File.ReadList
  ListaPalabras = File.ReadList(File.DirAssets, "lista1.txt")
  Dim indPals As Int
  For indPals= 0 To ListaPalabras.Size - 1
    Dim iId As String = Regex.Split("\|", ListaPalabras.Get(indPals))(0)
    Dim iPF As String = Regex.Split("\|", ListaPalabras.Get(indPals))(1)
    Dim iPA As String = Regex.Split("\|", ListaPalabras.Get(indPals))(2)
    Dim b() As Byte = iPF.GetBytes("UTF-8")
    SQL1.ExecNonQuery2(strQuery, Array As Object(iId, BytesToString(b, 0, b.Length, "UTF-8") , iPA))
    'SQL1.ExecNonQuery2(strQuery, Array As Object(iId, iPF, iPA))
  Next
 
End Sub
 

josejad

Expert
Licensed User
Longtime User
Que altenativas existen en B4X? Concretamente, y por ahora, me interesa el entorno Windows -B4J-
Pues depende si las quieres en local, o en remoto:
- En remoto, como te ha comentado el amigo Roer, puedes usar una base de datos, y la forma recomendada de usarlas es jRDC2. (necesitas un VPS)
- En local, que se me ocurran:
  • SQLite, como también te ha comentado Roer
  • KVS2. Es una forma simplificada de SQLite que guarda en la forma "clave->valor". Muy sencilla y potente, puedes guardar maps, listas, incluso imágenes
  • Fichero (File): Puedes salvar a disco una lista, un mapa, un string... y después recuperarlos
  • 1618293888848.png
En cuanto a tablas, hay una vista que es B4XTable de la que puedes guardar y cargar los datos de SQLite o de un archivo .csv por ejemplo

saludos,
 

edgar_ortiz

Active Member
Licensed User
Longtime User
Sobre el uso de SQLite, lo cual desde mi punto de vista es lo mas recomendable para almacenar información en forma "local".

Creo que vale la pena mencionar que (previamente) puedes crear tu base de datos y después agregarla a los "archivos" de tu aplicación. y después la "copias" a tu directorio de trabajo.

Saludos,

Edgar
 
Top