Necesita un buen método para cambiar (SQLite) tipo de datos de columna

Estoy teniendo una tabla con columna 'int'. Durante la actualización del software, quiero cambiarlo a un tipo de datos 'largo'. Parece SQLite no proporciona una opción (en la instrucción alter) para cambiar / modificar las propiedades de la columna. Puesto que quiero hacer una actualización, la tabla puede contener datos que el usuario no debe perder. Así que por favor me sugieren un buen método para cambiar la propiedad de tipo de datos de columna sin pérdida de datos.

Una forma sugerida en los enlaces de búsqueda es crear una tabla temporal, copiar los registros de la tabla existente, eliminar la tabla existente y cambiar el nombre de la tabla temporal. Dudo que sea eficiente.

Su ayuda apreciada!

Saludos

Vivek Ragunathan

Utilicé las instrucciones siguientes para cambiar el tipo de la columna.

CREATE TABLE IF NOT EXISTS **TEMP_TABLE** (id integer primary key autoincrement, **col2change integer not null**, ...) INSERT INTO TEMP_TABLE SELECT * FROM EXISTING_TABLE DROP TABLE EXISTING_TABLE ALTER TABLE TEMP_TABLE RENAME TO EXISTING_TABLE 

Cambié la columna del tipo del int en la tabla existente al tipo entero. Para unos cientos de filas, era razonablemente rápido.

Las columnas de SQLite3 no tienen tipos de datos, sólo afinidades : no hay ningún beneficio al cambiar el tipo de columna de int a largo.

Si un programa wrapper está truncando valores antes de darlos a SQLite3, hay una manera de solucionar esto editando el esquema. Es una operación peligrosa, por lo que debe hacerlo sólo después de realizar una copia de seguridad de la base de datos. El esquema se almacena en la tabla sqlite_master ; Normalmente es de sólo lectura, pero puede modificarlo si lo habilita con el pragma del esquema de escritura . Tenga cuidado de realizar solo cambios que no invaliden sus datos; Puede cambiar int a long int ya que ambos tienen afinidad INTEGER.

De la documentación de SQLite

No es posible cambiar el nombre de una columna, eliminar una columna, añadir o eliminar restricciones de una tabla.

Compruebe este enlace

Recuerde que los tipos de datos de columna no son rígidos en SQLite. Compruebe este enlace

Edit: Después de sus comentarios sobre otra respuesta, supongo que la opción que usted mencionó – trabajando a través de la tabla temporal – es la única, que no es eficiente fuera de curso.

Puede agregar una nueva columna, copiar los valores de la antigua a la nueva columna, eliminar la columna antigua y luego cambiar el nombre de la nueva columna al nombre antiguo

AFAIK no hay manera en Android de cambiar los tipos de datos de la columna una vez que se crea y se utiliza una tabla. La forma práctica es hacer una nueva tabla y copiar los datos que lee acerca de

  • Android y SQLite: ¿Cuándo usar punto y coma para finalizar las sentencias?
  • Android SQLite se estrelló después de 170 fila
  • ¿Consulta para obtener registros basados ​​en Radius en SQLite?
  • Android DataBase está bloqueado por otro hilo
  • Cómo insertar valor nulo en Sqlite con SQLiteStatement
  • La mejor manera de unir tablas usando sqlite en android
  • GetWritableDatabase llamado recursivamente
  • Encriptación y bloqueo de bases de datos Android
  • Android: Fragmentos, SQLite y cargadores
  • ¿Cuál es el propósito de FeedReaderContract y cómo definir la clase interna en OpenHelper Class
  • Devolver datos de AsyncTask Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.