2
public String getCourse_info (String courseID) {

        String[] columns = new String[] {KEY_COURSE_ID, KEY_COURSE_TITLE, KEY_COURSE_CNUMBER, KEY_COURSE_SUBJECT, KEY_COURSE_DAYS,
                KEY_COURSE_START_TIME, KEY_COURSE_END_TIME, KEY_COURSE_PROFESSOR, KEY_COURSE_BUILDING, KEY_COURSE_ROOM_NUMBER };

        Cursor c = ourDataBase.query(DATABASE_TABLE_COURSES, columns, KEY_COURSE_ID + "=?", new String[]{courseID}, null, null, null);
        String result = "";

        int iCid = c.getColumnIndex(KEY_COURSE_ID);
        int iCtitle = c.getColumnIndex(KEY_COURSE_TITLE);
        int iCcnumber = c.getColumnIndex(KEY_COURSE_CNUMBER);
        int iCsubject = c.getColumnIndex(KEY_COURSE_SUBJECT);
        int iCdays = c.getColumnIndex(KEY_COURSE_DAYS);
        int iCstart_time = c.getColumnIndex(KEY_COURSE_START_TIME);
        int iCend_time = c.getColumnIndex(KEY_COURSE_END_TIME);
        int iCprofessor = c.getColumnIndex(KEY_COURSE_PROFESSOR);
        int iCbuilding = c.getColumnIndex(KEY_COURSE_BUILDING);
        int iCroom_number= c.getColumnIndex(KEY_COURSE_ROOM_NUMBER);

        for(c.moveToFirst(); !c.isAfterLast();c.moveToNext()){
            result = result + c.getString(iCid)+ " " +c.getString(iCtitle)+ " "+c.getString(iCcnumber)+" "+ c.getString(iCsubject) + " "+
                    c.getString(iCdays)+ " "+ c.getString(iCstart_time)+ " "+ c.getString(iCend_time) +" " + 
                    c.getString(iCprofessor) + " "+ c.getString(iCbuilding) + " " + c.getString(iCroom_number)+ "\n" ;
        }
        Log.d("hello", result+"test2");
        return result;
    }

ok, I'm trying to run this code on one of the table in Database. Thing is if I pass the first course_id in database, it works perfectly. But when I try to put 2nd or any course_id after that, the string doesn't display anything.

2 Answers 2

2

Maybe because the condition you have used

for(c.moveToFirst(); !c.isAfterLast();c.moveToNext()) 

is failing.

Means the cursor is reaching the end of the records after retrieving the first record.

Use these statements and check that its not going to the end of the table after retrieving the first record.

if  (c.moveToFirst()) {

            Log.d("Entering","moveToFirst");
              do {
                        int iCid = c.getColumnIndex(KEY_COURSE_ID);
    int iCtitle = c.getColumnIndex(KEY_COURSE_TITLE);
    int iCcnumber = c.getColumnIndex(KEY_COURSE_CNUMBER);
    int iCsubject = c.getColumnIndex(KEY_COURSE_SUBJECT);
    int iCdays = c.getColumnIndex(KEY_COURSE_DAYS);
    int iCstart_time = c.getColumnIndex(KEY_COURSE_START_TIME);
    int iCend_time = c.getColumnIndex(KEY_COURSE_END_TIME);
    int iCprofessor = c.getColumnIndex(KEY_COURSE_PROFESSOR);
    int iCbuilding = c.getColumnIndex(KEY_COURSE_BUILDING);
    int iCroom_number= c.getColumnIndex(KEY_COURSE_ROOM_NUMBER);

result = result + c.getString(iCid)+ " " +c.getString(iCtitle)+ " "+c.getString(iCcnumber)+" "+    c.getString(iCsubject) + " "+
                c.getString(iCdays)+ " "+ c.getString(iCstart_time)+ " "+ c.getString(iCend_time) +" " + 
                c.getString(iCprofessor) + " "+ c.getString(iCbuilding) + " " + c.getString(iCroom_number)+ "\n" ;
    }

      }

       while (c.moveToNext());
        } 
        c.close();    
 }

If its going to the last record then it will yield ArrayIndexOutOfBoundsException.

Sign up to request clarification or add additional context in comments.

Comments

0

See for sqlite query that try fro this code,

Cursor query = db.query(table, columns, selection, selectionArgs, groupBy,
                having, orderBy);
if (query.getCount() > 0) {
        for (int i = 0; i < query.getCount(); i++) {
            int KEY_COURSE_ANY = query.getString(query.getColumnIndex(KEY_COURSE_ANY));
        }
    }

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.