Cómo realizar operaciones de base de datos mediante Async Task

Mi aplicación se está atascando mientras que realiza la operación de la base de datos después de googling para las soluciones que se sugirió que utilizo AsyncTask de modo que el hilo principal no consiga bloqueado.

He creado la clase separada y extendida SQLiteOpenHelper e implementado "OnCreate" y "OnUpgrade" método. Pero para implementar AsyncTask necesito extender "AsyncTask". Ahora mi problema aquí es que ya he extendido una clase y no puedo extender otra clase para la misma clase.

Mi código es algo como esto.

import android.content.Context; import android.database.Cursor; import android.database.DatabaseErrorHandler; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteDatabase.CursorFactory; import android.database.sqlite.SQLiteOpenHelper; import android.util.Log; import android.widget.Toast; import com.example.project.R; public class Database extends SQLiteOpenHelper{ static final String dbname="Project"; static final int dbversion=1; TableA r=new TableA(); SQLiteDatabase db; private Context Context; public Database(Context context) { super(context, dbname, null, dbversion); try{ db=getWritableDatabase(); // TODO Auto-generated constructor stub if (db.isOpen()){ System.out.println("Database is opened"); } else{ System.out.println("Database is not opened"); } } catch(Exception e){ Log.e(dbname, e.getMessage()); } } @Override public void onCreate(SQLiteDatabase db) { // TODO Auto-generated method stub try{ db.beginTransaction(); db.execSQL(r.r_Table); db.insert(r.Tablename, null, r.insertdata()); db.setTransactionSuccessful(); retrivedata(); } catch(Exception e){ android.util.Log.e(r.Tablename, e.getMessage()); } finally{ db.endTransaction(); } }// 

¿Puede alguien sugerir cómo puedo realizar operaciones de base de datos con SQLiteOpenHelper dentro de un AsyncTask.

Gracias Siva

En tu Actvity agrega el siguiente código, realiza los cambios necesarios,

 private class GetContacts extends AsyncTask<Object, Object, Cursor> { DatabaseConnector dbConnector = new DatabaseConnector( getApplicationContext()); @Override protected Cursor doInBackground(Object... params) { dbConnector.open(); if (dbConnector.getAllValues() != null) { return dbConnector.getAllValues(); } else return null; } @Override protected void onPostExecute(Cursor result) { if (result != null) { conAdapter.changeCursor(result); // set the adapter's Cursor dbConnector.close(); } } } 

ejecute esto por el new GetContacts().execute((Object[]) null);

No, no puedes extender una clase de varias clases ya que viola la propiedad de java porque java no soporta herencia múltiple así que para tu caso tienes que crear una nueva clase que extenderá ASyncTask y reemplazará los métodos abstractos para ejecutar todo las operaciones relacionadas con la base de datos. Gracias

  • ¿Qué desencadena SqliteDbOpenHelper onUpgrade ()?
  • Cambiar un valor en una columna en sqlite
  • Datos de exportación de Android a csv
  • Longitud máxima de Android Sqlite String?
  • ListView Casilla de verificación Guardar estado
  • Android SqliteAssetHelper - fusionar las tablas de la base de datos del activo con el existente
  • ¿Cómo obtener el último registro de Sqlite?
  • Sugar ORM lanza excepción NoSuchTable en lollipop
  • Android - cuándo llamar a db.setTransactionSuccessful ()?
  • ¿Cómo puedo comprobar si mi tabla sqlite contiene datos?
  • Cómo insertar a granel en sqlite en android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.