Bouraoui
Bouraoui

Reputation: 13

get the Last rows from my contentProvider

I am currently working with an Android content provider that i have created i use the query methode in a service because i have to update my result every 2 second my probleme is i want to get the last row in my databases, I put the sursor to the last position but every time his getting me all the data that he found in the database.

this is the service that I developed:

package fr.esigetel.echange.service;

import java.util.Timer;
import java.util.TimerTask;
import android.app.Service;
import android.content.ContentResolver;
import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.os.Handler;
import android.os.IBinder;
import android.os.Message;
import android.util.Log;
import fr.esigetel.mediatag.cp.WifiProvider;

public class informationService extends Service {

Timer mTimer;

private Handler mHandler = new Handler() {
    @Override
    public void handleMessage(Message msg) {
        returnContentProvider();

    }
};

@Override
public void onCreate() {
    super.onCreate();
    mTimer = new Timer();
    Log.d("onCreate informationService", "onCreate informationService");
}

@Override
public int onStartCommand(Intent intent, int flags, int startId) {

    mTimer.scheduleAtFixedRate(new TimerTask() {

        @Override
        public void run() {
            mHandler.sendEmptyMessage(0);

        }
    }, 0, 5000);        
    return super.onStartCommand(intent, flags, startId);
}

@Override
public void onDestroy() {
    if (mTimer != null) {
        mTimer.cancel();
        mTimer = null;
    }
    if (mHandler != null) {
        mHandler = null;
    }
    super.onDestroy();

}

@Override
public IBinder onBind(Intent intent) {
    return null;
}

public informationService() {
}

private void returnContentProvider() {

    Uri myuri = Uri.parse("content://fr.esigetel.mediatag.cp/maxdata");


    ContentResolver cr = getContentResolver();

    Cursor c = cr.query(myuri, null, null, null, null);

    int idRech = c.getColumnIndex(WifiProvider.MAX_COL_ID);
    int nameap = c.getColumnIndex(WifiProvider.MAX_COL_APName);
    int adressemac = c.getColumnIndex(WifiProvider.MAX_COL_AdresseMac);
    int rssi = c.getColumnIndex(WifiProvider.MAX_COL_RSSI);
    int frequence = c.getColumnIndex(WifiProvider.MAX_COL_Freq);
    int daterech = c.getColumnIndex(WifiProvider.MAX_Date);
    c.moveToLast();
    while (c.moveToPrevious()) {
        int id = c.getInt(idRech);
        String name = c.getString(nameap);
        String mac = c.getString(adressemac);
        int Rssi = c.getInt(rssi);
        int Freq = c.getInt(frequence);
        int Daterech = c.getInt(daterech);

        try {   
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
        Log.d("aaaaaa", name);
    }

    c.close();
}

How could i request only the last row of my database? this methode alway give me the whole data.

Upvotes: 1

Views: 1182

Answers (1)

Karan Mavadhiya
Karan Mavadhiya

Reputation: 1052

Cursor c = cr.query(myuri, null, null, null, null);
c.moveToLast();

Now Cursor Is At Last Possition And get The Last Record Data

  int idRech = c.getColumnIndex(WifiProvider.MAX_COL_ID);
  int nameap = c.getColumnIndex(WifiProvider.MAX_COL_APName);
  int adressemac = c.getColumnIndex(WifiProvider.MAX_COL_AdresseMac);
  int rssi = c.getColumnIndex(WifiProvider.MAX_COL_RSSI);
  int frequence = c.getColumnIndex(WifiProvider.MAX_COL_Freq);
  int daterech = c.getColumnIndex(WifiProvider.MAX_Date);

Upvotes: 3

Related Questions