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.

Gracias por adelantado…

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 } 

  • El manejo de la base de datos dejó de funcionar en Android 2.2.1 (Desire HD 1.72.405.3)
  • Android MediaStore obtiene distintas carpetas de archivos de música
  • ¿Hay alguna forma más rápida de iterar a través de las filas de la consulta Sqlite?
  • ¿Cómo obtener el recuento de filas de una consulta en Android usando SQLite?
  • SQLite Android - parámetros nombrados
  • Cómo agregar segunda tabla en la base de datos en sqlite?
  • android sqlite crea índice con la cláusula where falla
  • Utilizar CursorLoader para consultar la base de datos SQLite y rellenar AutoCompleteTextView
  • No se puede crear tabla TEMP en Android sqlite
  • ¿Cómo agregar datos iniciales a la base de datos SQLite?
  • Cómo almacenar JSON en SQLite
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.