Apurva
Apurva

Reputation: 7901

Android : How to create Cursor object to get item id in SQLite?

How to create cursor object to get item id from database?

Here is my method of DBHelper, see the Cursor method

public int getItemIdByPosition(int position) {

    SQLiteDatabase db = this.getReadableDatabase();
    Cursor cursor = db.rawQuery("select * from " + TABLE_NAME, null);
    cursor.moveToPosition(position);
    return Integer.parseInt(cursor.getString(0));
}

Upvotes: 0

Views: 6987

Answers (4)

Iman Marashi
Iman Marashi

Reputation: 5753

Try this:

    public int getItemIdByPosition(int position) {

    int itemID = 0;
    Cursor localCursor = database.rawQuery("select * from " + TABLE_NAME,
            null);
    int i = localCursor.getColumnIndex("ID");
    if (localCursor.moveToFirst()) {

        do {

            itemID = Integer.parseInt(localCursor.getString(i));
        } while (localCursor.moveToPosition(position));
    }
    localCursor.close();
    return itemID;
}

Upvotes: 0

ISURU
ISURU

Reputation: 923

This is a sample code hope you can get a help from this

   private void displayListView(String getter){
    //get the customer data from the db and feed them to cursor and load the   data to lest 
    Cursor cursor = dbHelper.fetchallcustomercompany(getter);

    String[] columns = new String[] {
            //get the needed columns of the db and feed them in to string array

        DBCreater.Key_customer_Shop
    };

    int[] to = new int[]{
            //get the textboxs in xml layout,which going to display the values in to integer array  
            R.id.tv_demo_search_text_Isuru
    };
    //address the xml list view to java
    final ListView listView = (ListView)findViewById(R.id.lv_searchcustomer_cuzlist_Isuru);
    // feed the context,displaying layout,data of db, data source of the data and distination of the data
    if(cursor.getCount()==0){
        Toast.makeText(getApplicationContext(), " No matching data", Toast.LENGTH_SHORT).show();
    }
    else{
     dataAdapter = new SimpleCursorAdapter(this, R.layout.demo_search, cursor, columns, to,0);
     //load the data to list view
    listView.setAdapter(dataAdapter);
    //what happen on when user click on the item of the list view

    listView.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                long arg3) {
            // TODO Auto-generated method stub
            Cursor cursor =(Cursor)listView.getItemAtPosition(arg2);
            //get the value of the customer name from the clicked listitem
            String name=cursor.getString(cursor.getColumnIndexOrThrow("customer_shop"));


        }

    });

}

}

Upvotes: 1

Blagojco
Blagojco

Reputation: 346

String selectQuery = "SELECT * FROM " + TABLE_NAME + " WHERE " + POSITION + " = " + position;

    db = this.getWritableDatabase();
    Cursor cursor = db.rawQuery(selectQuery, null);

    int userId;

    if (cursor.moveToFirst())
    {
        userId = cursor.getInt(0);  
    }

    cursor.close();
    return userId;

Upvotes: 1

JonasOliveira
JonasOliveira

Reputation: 704

Seems to be correct. Maybe the position passed through method is not correct, maybe is more efficient is you use, instead of pass a position on your method pass the ID:

"select * from " + TABLE_NAME + " where id = " = id

Also you can use: cursor.getColumnIndex(COLUMN_NAME) instead of cursor.getString(0)

Your code seems to be right, I just would check the below things that I mentioned.

Upvotes: 2

Related Questions