Android / ORMLite Insertar fila con ID
Actualmente utilizo ORMLite para trabajar con una base de datos SQLite en Android. Como parte de esto estoy descargando un montón de datos de un servidor back-end y me gustaría tener estos datos agregados a la base de datos SQLite en el mismo formato exacto que está en el servidor back-end (es decir, los ID son los mismos, etc) .
Por lo tanto, mi pregunta es si relleno mi objeto de entrada de base de datos (lo llamaremos Equipo), incluyendo el campo generado / primario del equipo por setId (), y luego ejecuto un DAO.create () con esa entrada de Equipo Que la ID se guarda correctamente? Lo intenté de esta manera y me parece que este no fue el caso. Si ese es el caso intentaré otra vez y buscaré otros problemas, pero con los primeros pasos sobre el código no pude encontrar uno. Así que esencialmente, si llamo a DAO.create () en un objeto de base de datos con un conjunto de ID, esa ID se enviará a la base de datos y si no lo es, ¿cómo puedo insertar una fila con un valor de clave primaria ya completado?
- ¿Cómo utilizar correctamente TextSwitcher en ListView?
- El tacto de la firma de la lona crea la edición en teléfono
- Cómo insertar a granel de Json a Sqlite en Android
- Cómo convertir de java.util.HashMap a android.content.ContentValues?
- ¿Cómo obtener todos los nombres de tablas en la base de datos Android sqlite?
¡Gracias!
- Es posible copia de seguridad y restaurar un archivo de base de datos en android? Dispositivos no root
- Ejemplo de cuenta de SQLite
- La forma más rápida y rápida de obtener nuevos mensajes sms al iniciar la aplicación - Android
- Advertencia: No codifique "/ data /"; Utilice Context.getFilesDir (). GetPath () en su lugar
- SQLite onUpgrade ()
- Eficiente ejecución de consultas SQL por lotes en Android, para actualizar la base de datos
- ¿Cómo puedo actualizar un valor de columna de la base de datos android sqlite a null usando ContentValues?
- ¿Cómo agregar y utilizar la extensión de carga de Sqlite en android?
@Femi es correcto que un objeto puede ser un ID generado o un id, pero no ambos. El problema es más que cómo ORMLite almacena el objeto pero también tiene que coincidir con el esquema con el que se generó la base de datos.
ORMLite soporta una opción allowGeneratedIdInsert=true
a la anotación @DatabaseField
que permite este comportamiento. Esto no es compatible con algunos tipos de base de datos (Derby, por ejemplo), pero funciona bajo Android / SQLite.
Para la posteridad, también puede crear 2 objetos que comparten la misma tabla: una con un ID generado y otra sin. A continuación, puede insertar utilizando el ID de Dao generado para obtener ese comportamiento y el otro Dao para tomar el valor de id establecido por el llamador. Aquí hay otra respuesta hablando de eso . El problema para usted suena como que esto creará una gran cantidad de DAOs adicionales.
La única otra solución es no usar el id para sus propósitos. Deje que la base de datos genere el ID y luego tenga un campo adicional que utilice que se establezca externamente para sus propósitos. Forzar la base de datos-id en ciertas circunstancias me parece un mal patrón.
Desde http://ormlite.com/docs/generated-id :
Boolean si el campo es un campo de ID generado automáticamente. El valor predeterminado es false. Sólo un campo puede tener este conjunto en una clase. Esto le indica a la base de datos que genere automáticamente un id correspondiente para cada fila insertada. Cuando se crea un objeto con un ID generado utilizando el método Dao.create (), la base de datos generará un id para la fila que será devuelta y establecida en el objeto por el método create. Algunas bases de datos requieren secuencias para IDs generados, en cuyo caso el nombre de secuencia se generará automáticamente. Para especificar el nombre de la secuencia use generatedIdSequence. Sólo se puede especificar uno de estos, id y generatedIdSequence.
Debe utilizar generatedId
(en cuyo caso todos los identificadores deben generarse) o id
(en cuyo caso puede configurarlos), pero no ambos.
- Bloquear la orientación del dispositivo – React Native (Android)
- RxJava: ¿Cómo puedo hacer una observación de búsqueda-una vez-y-reutilización?