1

My Application getting stuck while performing database operation, My question is how can I use the Async Task in this case to remove the lag from the user interface. Any example code it will help ! I'm stucking with this problem a lot of time, so i'm counting on you guys .

This is my database class :

public class database extends SQLiteOpenHelper {

    private static final int DATABASE_VERSION = 1;
    private static final String DATABASE_NAME = "Contacts.database";
    private static final String TABLE_NAME = "Contacts";
    private static final String COLUMN_NAME = "contact_name";
    private static final String COLUMN_NUMBER = "contact_number";
    private Boolean exists = false;
    public database(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase sqLiteDatabase) {
        sqLiteDatabase.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
        //execute the create table query
        sqLiteDatabase.execSQL("CREATE TABLE " + TABLE_NAME + "(" +
                COLUMN_NAME + " TEXT, " +
                COLUMN_NUMBER + " TEXT " +
                ");");

    }

    @Override
    public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {

        onCreate(sqLiteDatabase);
    }

    //add row to database
    public void addContact( String ContactNumber, String ContactName){
        ContentValues values = new ContentValues();
            values.put(COLUMN_NAME, ContactName);
            values.put(COLUMN_NUMBER, ContactNumber);
            SQLiteDatabase db = getWritableDatabase();
            db.insert(TABLE_NAME, null, values);
            db.close();
            exists = true;
    }

    public Cursor getAllData() {
        SQLiteDatabase db = this.getWritableDatabase(); //create/open db for reading/writing
        Cursor res = db.rawQuery("SELECT * FROM " + TABLE_NAME , null);  //runs SQL query and returns cursor over result
        /*the second paramenter to rawQuery is cancellableSignal which signifies that what
        needs to be done when the operation is cancelled...
        in this case null signifies nothing...*/

        /*Cursor: A Cursor implementation exposes results from a query on a SQLiteDatabase*/
        return res;
    }

    public int tableExists(){
      //  boolean isTableExists(SQLiteDatabase db, String tableName)
       SQLiteDatabase db = this.getWritableDatabase();
        Cursor cursor = db.rawQuery("SELECT  * FROM " + TABLE_NAME,null);
            int count = cursor.getCount();
            cursor.close();
            return count;

    }
}

And this is my Fragment on Create Methode :

@Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {
            mRootView = inflater.inflate(R.layout.fragment_four, container, false);
            myDB = new database(getActivity());
            exist = myDB.tableExists();

            rvContacts = (RecyclerView) mRootView.findViewById(R.id.rvContacts);
            return mRootView;
        } 
naima
  • 129
  • 1
  • 12
  • Have you tried this? https://ashwinrayaprolu.wordpress.com/2011/03/15/android-database-example-database-usage-asynctask-database-export/ – Paul Chu Feb 28 '18 at 00:39
  • See this too, https://stackoverflow.com/questions/22340678/android-sqlite-query-insert-update-delete-always-need-to-be-on-background-th – RoHiT Feb 28 '18 at 04:54

0 Answers0