Android sqlite rollback
Estoy haciendo base de datos sin. Descargando datos entre sql server y sqlite.If allí alguna circunstancia mientras que la actualización / insertar expedientes en sqlite, la conectividad del Internet es lenta o gota entonces necesidad de rodar detrás. ¿Es posible en este código o cómo utilizar la transacción aquí.
public void insertTableRecords(String strTableName, String[] strToFields, String[] strValues){ DBAdapter dbAdapter = DBAdapter.getDBAdapterInstance(DownlaodTableActivity.this); dbAdapter.openDataBase(); ContentValues initialValues = new ContentValues(); for(int i=0 ;i<strToFields.length;i++){ initialValues.put(strToFields[i],strValues[i]); } long n = dbAdapter.insertRecordsInDB(strTableName, null, initialValues); System.out.println( " -- inserted status : --- " + n); }
Por favor, ayúdame.
- Android: SQLiteException: no es un error no en todos los dispositivos
- Acceso a los datos principales de iOS desde Android
- La carpeta de "datos" del monitor de dispositivos Android está vacía
- ¿Cómo puede acceder a los contenidos de las bases de datos de Android Emulator?
- ¿Cómo veo la base de datos SQLite en un dispositivo Android?
Gracias por adelantado…
- ¿Cómo obtener el último registro de Sqlite?
- Problemas en la creación de varias tablas en sqlite
- Active Android es propenso a las inyecciones de SQL. ¿Alguna solución conocida?
- ¿Cómo medir el tamaño de los datos de las aplicaciones de Android e identificar las fugas de almacenamiento?
- ¿Cómo puedo restablecer un número de secuencia autoincrement en sqlite
- Conjunto de conexiones SQLite
- Mantenga el elemento de lista highlite con SimpleCursorAdapter
- Prácticas recomendadas para unir tablas y notificar a ContentObservers en Android ContentProvider
Este es un breve ejemplo de cómo usar transacciones en SQLite (db es una instancia de SQLiteDatabase en lo siguiente):
try { db.beginTransaction(); // your sql stuff db.setTransactionSuccessful(); } catch(SQLException e) { // do some error handling } finally { db.endTransaction(); }
Tenga en cuenta, es importante que cualquier método que elija para reemplazar "// your sql stuff" con tiros y excepción. Utilice insertOrThrow () o si necesita más flexibilidad instancias de SQLiteStatement (sus métodos .execute siempre arrojan excepciones en caso de error).
Tenga en cuenta, no es necesario volver explícitamente. Si llama a db.endTransaction () sin .setTransactionSuccessful () se revertirá automáticamente.
Sólo recuerde siempre poner setTransactionSuccessful después de su última SQLException throwing métodos 🙂
Podría extenderlo fácilmente con otro bloque de captura, para detectar excepciones para los tiempos de espera de la red.
Esta inserción está realizando sólo una tabla. Por lo tanto, verificando la variable n puede encontrar si los datos se insertan o no. No hay nada entre él. No necesita ninguna transacción aquí.
Si quiere decir con "rollback", eliminar las filas añadidas; Esto es bastante fácil … Puede agregar un TIMESTAMP a cada fila añadida y establecer su valor en System.currentTimeMillis()
… Guardar el primer System.currentTimeMillis()
y si desea volver a deshacer puede DELETE
de la tabla todos Las filas agregadas después de la marca de tiempo guardada en su programa
Parece que sólo está actualizando la tabla después de tener una fila completa … Aquí hay un código que le ayudará a determinar si el teléfono todavía está conectado a la red y, en consecuencia, puede continuar el retiro de las filas o no.
manifest
Compruebe si está conectado y continúe
ConnectivityManager conManager = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo networkInfo = conManager.getActiveNetworkInfo(); if(networkInfo.isConnected()){ //YOUR CODE }
- ¿Es posible establecer el color de una cadena directamente en string.xml?
- ¿Recomendarías a los principiantes a usar Android Studio?