Spanish SQLite tipo de datos

Duque

Active Member
Licensed User
Longtime User
Colegas saludos
Estoy teniendo problemas para cambiar el tipo de datos de un campo
pasa que al crear la tabla lo deje en INT pero necesito cambiarlo ha TEXT

El problema es que las BD ya tiene datos por lo que necesito es cambiar el tipo de datos sin borrar la información

Alguna idea de como hacerlo HELP !
 

Descartex

Well-Known Member
Licensed User
Longtime User
Muy buenas.
Puedes hacerte la base de datos nueva, con los tipos de datos cambiados y luego, pasar los datos de la base de datos vieja a la "nueva", reemplazar la nueva con la vieja y hecho.
Un saludo.
 

Duque

Active Member
Licensed User
Longtime User
Gracias por la pronta respuesta, Me tocaría implementar una función en mi app B4A que me haga esto?
Ya que la bd esta en unos 50 dispositivos funcionando justo ahora !
 

Descartex

Well-Known Member
Licensed User
Longtime User
Como diría Jack el Destripador... vayamos por partes:
1.- en tu actualización, busca un archivo interno (que no existirá salvo que se haya ejecutado ya la actualización) por ejemplo "updated.dat" en File.DirInternal.
Si el fichero no existe, pasamos al paso 2:
2.- Implementa una funcion que cree una base de datos nueva y mueva los datos actuales a ella, tras lo cual, machacas la base de datos vieja con la nueva. Si todo esto salio ok, creas el fichero updated.dat en File.DirInternal, con lo cual, en las siguientes ejecuciones, no machacará nada ni nada, pues el fichero ya existe.

Puede que no sea la solución más ortodoxa, pero en una ocasión hice un cambio parecido para cerca de 11k dispositivos que habian descargado la app y no se enteró ni dios :D

Un saludo.
 

Descartex

Well-Known Member
Licensed User
Longtime User
Hazlo nada mas empezar:
B4X:
Sub Activity_Create(FirstTime As Boolean)
    'Do not forget to load the layout file created with the visual designer. For example:
    If Not(File.Exists(File.DirInternal,"updated.dat")) Then
        ActualizaBase
        File.Copy(File.DirInternal,"NuevaBase.db",File.DirInternal,"ViejaBase.db")
    End If
Y en ActualizaBase haces lo necesario para crear la base nueva, pasar los datos y machacarla.
 
Top