17

メイン スレッドがブロックされないように、AsyncTask を使用することをお勧めしました。

別のクラスを作成し、SQLiteOpenHelper を拡張し、「OnCreate」および「OnUpgrade」メソッドを実装しました。しかし、AsyncTask を実装するには、「AsyncTask」を拡張する必要があります。ここでの問題は、既に 1 つのクラスを拡張しており、同じクラスの別のクラスを拡張できないことです。

私のコードはこのようなものです。

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();
        }


    }//

AsyncTask 内で SQLiteOpenHelper を使用してデータベース操作を実行する方法を提案できますか?

ありがとうシヴァ

4

2 に答える 2

0

いいえ、Java は多重継承をサポートしていないため、Java のプロパティに違反しているため、複数のクラスからクラスを拡張することはできません。そのため、ASyncTask を拡張し、抽象メソッドをオーバーライドしてすべてを実行する新しいクラスを作成する必要があります。データベース関連の操作。ありがとうございました

于 2015-06-22T09:20:49.147 に答える