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

  • Diferencias de rendimiento entre SQLite en Android e iOS
  • ¿Cómo utilizo las sentencias preparadas en SQlite en Android?
  • ¿Cómo sincronizar bases de datos SQLite y MySQL mediante notificaciones push?
  • Android SQLite ON CONFLICT UPDATE es posible?
  • sqlite Android - cómo obtener el valor de col / fila específica
  • Selección de un proyecto ORM para Android (nivel mínimo de API 7)
  • Ejecución de varias sentencias con SQLiteDatabase.execSQL
  • ANDROID SQLite SELECT x AS _id
  • Usando la función strftime de sqlite en android
  • Sqlite onCreate () problema Quiero que mi base de datos creada una vez, y no va a cambiar, pero no puedo crear datos cuando estoy en onCreate ()
  • Carácter turco en SQLite mientras utiliza la expresión LIKE
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.