infortunadamente el código se ejecuta muy lento. En promedio toma un 1 segundo su ejecución.
Buscando la forma de mejorar el rendimiento escribi este nuevo codigo:
B4X:
Sql1.BeginTransaction
Sql1.ExecNonQuery2("INSERT INTO GpsData VALUES(NULL,?,?,?,?,?)", Array As String(UnixTime, Lat, Lon, Speed, Bearing))
Sql1.EndTransaction
El código se ejecuta rápidamente. En promedio el tiempo de ejecución es de 50 Milésimas de segundo, pero al revisar la Base de datos, no hay datos.
Ni en el teléfono, ni en el log, hay registro de algún error.
Public Sub AnadirLugar
Dim ListOfMaps As List
ListOfMaps.Initialize
Dim m As Map
m.Initialize
m.Put("UnixTime", "1234") 'Ejemplo
m.Put("Lat", "lugar") 'Lugar
m.Put("Lon", "Lo que sea")
--------- etc, etc
ListOfMaps.Add(m)
DBUtils.InsertMaps(BDatos, Tabla, ListOfMaps) 'Nombre de tabla.....
End Sub
Como hay mas usuarios que hablan ingles, coloque ese post en el foro de dicho idioma, con la esperanza de que si no recibía respuesta en español, por lo menos lo haría en ingles.
La respuesta del foro en ingles, me sirvió para refrescar la memoria, no recordaba la linea Sql1.TransactionSuccessful, pero aun el programa almacena la información muy lentamente.
Has probado en distintos teléfonos? A ver si el problema fuera el tuyo, es raro que no sea algo que se comentara ya en el foro sí es algo común.
Sí quieres sube un proyecto de prueba y probamos y te decimos resultados
Justo despues del INSERT. Hay que indicar que la Transacción ha tenido éxito.
Como pone en la ayuda:
B4X:
SQL1.BeginTransaction
Try
'block of statements like:
For i = 1 to 1000
SQL1.ExecNonQuery("INSERT INTO table1 VALUES(...)
Next
SQL1.TransactionSuccessful
Catch
Log(LastException.Message) 'no changes will be made
End Try
SQL1.EndTransaction
abrir una transaccion y cerrarla para un solo INSERT (o cualquier sentencia que afecte la base) es un OVERKILL, las transacciones sirven para 2 o mas inserts, si hacen el trabajo mas rapido pero para una sentencia debe ser el mismo tiempo.
si esta lento, es probable que tu base no este optimizada o tengas muchos datos o este corrupta, prueba la velocidad con una base nueva