Comment effectuer des opérations de base de données à l'aide d'une tâche asynchrone
Ma demande est coincé lors de l'exécution d'opération de base de données après googler pour les solutions, il a été suggéré que j'utilise AsyncTask, de sorte que le thread principal n'est pas bloqué.
J'ai créé séparée de la classe et de l'étendue SQLiteOpenHelper et mises en œuvre "OnCreate" et "OnUpgrade" la méthode. Mais pour mettre en œuvre AsyncTask j'ai besoin d'étendre "AsyncTask". Maintenant, mon problème est que j'ai déjà étendue sur une classe et je ne peux pas étendre une autre classe pour la même classe.
Mon code est quelque chose comme cela.
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();
}
}//
Quelqu'un peut-il suggérer comment je peux effectuer des opérations de base de données avec SQLiteOpenHelper au sein d'une AsyncTask.
Merci
Siva
source d'informationauteur Siva
Vous devez vous connecter pour publier un commentaire.
Dans votre
Actvity
ajoutez le code suivant, faire les changements nécessaires,signer la présente par
new GetContacts().execute((Object[]) null);
Non, vous ne pouvez pas étendre une classe à partir de plusieurs classes, car elle viole la propriété de java, car java ne supporte pas l'héritage multiple donc pour votre cas, vous devez créer une nouvelle classe qui va s'étendre ASyncTask et de remplacer les méthodes abstraites pour effectuer tous la base de données des opérations liées.
Merci