1
votes

I am getting this error while executing my code.

Couldn't read row 0, col -1 from CursorWindow. Make sure the Cursor is initialized correctly before accessing data from it.

My Db Code is as follows

package com.routecounselor;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;

public class Project_DB extends SQLiteOpenHelper {

    public Project_DB(Context context) {
        super(context, "mydb.db", null, 1);

        // TODO Auto-generated constructor stub
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        // TODO Auto-generated method stub
        db.execSQL("CREATE TABLE route(routeId INTEGER PRIMARY KEY AUTOINCREMENT,routeNumber VARCHAR(5))");
        db.execSQL("CREATE TABLE stop(stopId INTEGER PRIMARY KEY AUTOINCREMENT,stopName VARCHAR(40),lat double,lon double)");
        db.execSQL("CREATE TABLE relation(relationId INTEGER PRIMARY KEY AUTOINCREMENT,routeId INTEGER, stopId INTEGER,"
                + "FOREIGN KEY(routeId) REFERENCES route(routeId),  FOREIGN KEY(stopId) REFERENCES stop(stopId))");

        Log.d("LOGCAT", "Route Table Created");
        Log.d("LOGCAT", "Stop Table Created");
        Log.d("LOGCAT", "Relation Table Created");

    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // TODO Auto-generated method stub

    }

    public void insertroute() {
        SQLiteDatabase db = this.getWritableDatabase();
        ContentValues values = new ContentValues();
        values.put("routeNumber", "101");
        db.insert("route", null, values);
        values.put("routeNumber", "104");
        db.insert("route", null, values);
        values.put("routeNumber", "104-A");
        db.insert("route", null, values);
        values.put("routeNumber", "105");
        db.insert("route", null, values);
        values.put("routeNumber", "105-A");
        db.insert("route", null, values);
        values.put("routeNumber", "110");
        db.insert("route", null, values);
        values.put("routeNumber", "111");
        db.insert("route", null, values);
        values.put("routeNumber", "113-A");
        db.insert("route", null, values);
        values.put("routeNumber", "115");
        db.insert("route", null, values);
        values.put("routeNumber", "120");
        db.insert("route", null, values);
        values.put("routeNumber", "121");
        db.insert("route", null, values);
        values.put("routeNumber", "122");
        db.insert("route", null, values);
        values.put("routeNumber", "122-A");
        db.insert("route", null, values);
        values.put("routeNumber", "124");
        db.insert("route", null, values);
        values.put("routeNumber", "124-A");
        db.insert("route", null, values);
        values.put("routeNumber", "127");
        db.insert("route", null, values);
        values.put("routeNumber", "127-A");
        db.insert("route", null, values);
        values.put("routeNumber", "128");
        db.insert("route", null, values);
        values.put("routeNumber", "131");
        db.insert("route", null, values);
        values.put("routeNumber", "133");
        db.insert("route", null, values);
        values.put("routeNumber", "136");
        db.insert("route", null, values);
        values.put("routeNumber", "138");
        db.insert("route", null, values);
        values.put("routeNumber", "1");
        db.insert("route", null, values);
        values.put("routeNumber", "1-C");
        db.insert("route", null, values);
        values.put("routeNumber", "3");
        db.insert("route", null, values);
        values.put("routeNumber", "6");
        db.insert("route", null, values);
        values.put("routeNumber", "7");
        db.insert("route", null, values);
        values.put("routeNumber", "21");
        db.insert("route", null, values);
        values.put("routeNumber", "24");
        db.insert("route", null, values);
        db.close();

    }

    public void insertstopName() {

        SQLiteDatabase db = this.getWritableDatabase();
        ContentValues values1 = new ContentValues();
        values1.put("stopName", "Mandimor");
        values1.put("lat", "33.637358");
        values1.put("lon", "73.035063");
        db.insert("stop", null, values1);

        values1.put("stopName", "Pindora");
        values1.put("lat", "33.652172");
        values1.put("lon", "73.064414");
        db.insert("stop", null, values1);

        values1.put("stopName", "Faizabad");
        values1.put("lat", "33.663157");
        values1.put("lon", " 73.085276");
        db.insert("stop", null, values1);

        values1.put("stopName", "Zeropoint");
        values1.put("lat", "33.678763");
        values1.put("lon", "73.076445");
        db.insert("stop", null, values1);

        values1.put("stopName", "Aabpara");
        values1.put("lat", " 33.707109");
        values1.put("lon", " 73.089308");
        db.insert("stop", null, values1);

        values1.put("stopName", "Super Market");
        values1.put("lat", "33.729444");
        values1.put("lon", "73.077584");
        db.insert("stop", null, values1);

        values1.put("stopName", "Tarnol");
        values1.put("lat", " 33.649919");
        values1.put("lon", "  72.910876");
        db.insert("stop", null, values1);

        values1.put("stopName", "G-10/1");
        values1.put("lat", " 33.670376");
        values1.put("lon", "  73.010287");
        db.insert("stop", null, values1);

        values1.put("stopName", "G-10/2");
        values1.put("lat", " 33.677019");
        values1.put("lon", " 73.005395");
        db.insert("stop", null, values1);

        values1.put("stopName", "G-10/3");
        values1.put("lat", " 33.686465");
        values1.put("lon", "73.020801");
        db.insert("stop", null, values1);

        values1.put("stopName", "G-9/3");
        values1.put("lat", " 33.696266");
        values1.put("lon", " 73.033483");
        db.insert("stop", null, values1);

        values1.put("stopName", "Pims");
        values1.put("lat", " 33.707050");
        values1.put("lon", "  73.054187");
        db.insert("stop", null, values1);

        values1.put("stopName", "G-7 Markaz");
        values1.put("lat", " 33.720329");
        values1.put("lon", "  73.058162");
        db.insert("stop", null, values1);

        values1.put("stopName", "Lal Quarter");
        values1.put("lat", " 33.717243");
        values1.put("lon", "  73.073263");
        db.insert("stop", null, values1);

        values1.put("stopName", "Polyclinic");
        values1.put("lat", " 33.720902");
        values1.put("lon", " 73.080108");
        db.insert("stop", null, values1);

        values1.put("stopName", "Pak Secretariat");
        values1.put("lat", " 33.737451");
        values1.put("lon", "  73.091737");
        db.insert("stop", null, values1);

        values1.put("stopName", "Islamabad Chok");
        values1.put("lat", " 33.632182");
        values1.put("lon", "  72.938578");
        db.insert("stop", null, values1);

        values1.put("stopName", "G-11/1");
        values1.put("lat", " 33.658188");
        values1.put("lon", "  72.995135");
        db.insert("stop", null, values1);

        values1.put("stopName", "G-11/4");
        values1.put("lat", " 33.664504");
        values1.put("lon", "  73.000978");
        db.insert("stop", null, values1);

        values1.put("stopName", "G-10 Markaz");
        values1.put("lat", " 33.676794");
        values1.put("lon", "  73.014791");
        db.insert("stop", null, values1);

        values1.put("stopName", "G-9 Markaz");
        values1.put("lat", "33.689885");
        values1.put("lon", "73.030500");
        db.insert("stop", null, values1);

        values1.put("stopName", "Blue Area");
        values1.put("lat", " 33.710953");
        values1.put("lon", "  73.060684");
        db.insert("stop", null, values1);

        values1.put("stopName", "Parliament Chok ");
        values1.put("lat", "33.729316 ");
        values1.put("lon", "73.093008");
        db.insert("stop", null, values1);

        values1.put("stopName", "G-15");
        values1.put("lat", "33.633175");
        values1.put("lon", "72.922142");
        db.insert("stop", null, values1);

        values1.put("stopName", "T and T Chok");
        values1.put("lat", "33.694879");
        values1.put("lon", "73.064160");
        db.insert("stop", null, values1);

        values1.put("stopName", "G-7/2");
        values1.put("lat", "33.702493");
        values1.put("lon", "73.066129");
        db.insert("stop", null, values1);

        values1.put("stopName", "Meloody");
        values1.put("lat", "33.716464");
        values1.put("lon", "73.083493");
        db.insert("stop", null, values1);

        values1.put("stopName", "Foreign Office");
        values1.put("lat", "33.718699");
        values1.put("lon", "73.103647");
        db.insert("stop", null, values1);

        values1.put("stopName", "Chattar");
        values1.put("lat", "33.779976");
        values1.put("lon", "73.240520");
        db.insert("stop", null, values1);

        values1.put("stopName", "Bara Kau");
        values1.put("lat", "33.739015");
        values1.put("lon", "73.178387");
        db.insert("stop", null, values1);

        values1.put("stopName", "Malpur");
        values1.put("lat", "33.730146");
        values1.put("lon", "73.145852");
        db.insert("stop", null, values1);

        values1.put("stopName", "RawalDam Chok");
        values1.put("lat", "33.708651");
        values1.put("lon", "73.106199");
        db.insert("stop", null, values1);
        db.close();
    }

    public void insertrelation() {
        SQLiteDatabase db = this.getWritableDatabase();
        ContentValues values3 = new ContentValues();
        values3.put("routeId", "1");
        values3.put("stopId", "1");
        db.insert("relation", null, values3);

        values3.put("routeId", "1");
        values3.put("stopId", "2");
        db.insert("relation", null, values3);

        values3.put("routeId", "1");
        values3.put("stopId", "3");
        db.insert("relation", null, values3);

        values3.put("routeId", "1");
        values3.put("stopId", "4");
        db.insert("relation", null, values3);

        values3.put("routeId", "1");
        values3.put("stopId", "5");
        db.insert("relation", null, values3);

        values3.put("routeId", "1");
        values3.put("stopId", "6");
        db.insert("relation", null, values3);

        values3.put("routeId", "1");
        values3.put("stopId", "49");
        db.insert("relation", null, values3);

        values3.put("routeId", "2");
        values3.put("stopId", "7");
        db.insert("relation", null, values3);

        values3.put("routeId", "2");
        values3.put("stopId", "8");
        db.insert("relation", null, values3);

        values3.put("routeId", "2");
        values3.put("stopId", "9");
        db.insert("relation", null, values3);

        values3.put("routeId", "2");
        values3.put("stopId", "10");
        db.insert("relation", null, values3);

        values3.put("routeId", "2");
        values3.put("stopId", "11");
        db.insert("relation", null, values3);

        values3.put("routeId", "2");
        values3.put("stopId", "12");
        db.insert("relation", null, values3);

        values3.put("routeId", "2");
        values3.put("stopId", "13");
        db.insert("relation", null, values3);

        values3.put("routeId", "2");
        values3.put("stopId", "14");
        db.insert("relation", null, values3);

        values3.put("routeId", "2");
        values3.put("stopId", "15");
        db.insert("relation", null, values3);

        values3.put("routeId", "2");
        values3.put("stopId", "6");
        db.insert("relation", null, values3);

        values3.put("routeId", "2");
        values3.put("stopId", "16");
        db.insert("relation", null, values3);

        values3.put("routeId", "3");
        values3.put("stopId", "7");
        db.insert("relation", null, values3);

        values3.put("routeId", "3");
        values3.put("stopId", "17");
        db.insert("relation", null, values3);

        values3.put("routeId", "3");
        values3.put("stopId", "18");
        db.insert("relation", null, values3);

        values3.put("routeId", "3");
        values3.put("stopId", "19");
        db.insert("relation", null, values3);

        values3.put("routeId", "3");
        values3.put("stopId", "20");
        db.insert("relation", null, values3);

        values3.put("routeId", "3");
        values3.put("stopId", "21");
        db.insert("relation", null, values3);

        values3.put("routeId", "3");
        values3.put("stopId", "12");
        db.insert("relation", null, values3);

        values3.put("routeId", "3");
        values3.put("stopId", "22");
        db.insert("relation", null, values3);

        values3.put("routeId", "3");
        values3.put("stopId", "15");
        db.insert("relation", null, values3);

        values3.put("routeId", "3");
        values3.put("stopId", "23");
        db.insert("relation", null, values3);

        values3.put("routeId", "3");
        values3.put("stopId", "16");
        db.insert("relation", null, values3);

        values3.put("routeId", "4");
        values3.put("stopId", "24");
        db.insert("relation", null, values3);

        values3.put("routeId", "4");
        values3.put("stopId", "19");
        db.insert("relation", null, values3);

        values3.put("routeId", "4");
        values3.put("stopId", "20");
        db.insert("relation", null, values3);

        values3.put("routeId", "4");
        values3.put("stopId", "9");
        db.insert("relation", null, values3);

        values3.put("routeId", "4");
        values3.put("stopId", "10");
        db.insert("relation", null, values3);

        values3.put("routeId", "4");
        values3.put("stopId", "21");
        db.insert("relation", null, values3);

        values3.put("routeId", "4");
        values3.put("stopId", "25");
        db.insert("relation", null, values3);

        values3.put("routeId", "4");
        values3.put("stopId", "26");
        db.insert("relation", null, values3);

        values3.put("routeId", "4");
        values3.put("stopId", "13");
        db.insert("relation", null, values3);

        values3.put("routeId", "4");
        values3.put("stopId", "14");
        db.insert("relation", null, values3);

        values3.put("routeId", "4");
        values3.put("stopId", "15");
        db.insert("relation", null, values3);

        values3.put("routeId", "4");
        values3.put("stopId", "27");
        db.insert("relation", null, values3);

        values3.put("routeId", "4");
        values3.put("stopId", "5");
        db.insert("relation", null, values3);

        values3.put("routeId", "4");
        values3.put("stopId", "28");
        db.insert("relation", null, values3);

        values3.put("routeId", "4");
        values3.put("stopId", "16");
        db.insert("relation", null, values3);

        values3.put("routeId", "5");
        values3.put("stopId", "24");
        db.insert("relation", null, values3);

        values3.put("routeId", "5");
        values3.put("stopId", "20");
        db.insert("relation", null, values3);

        values3.put("routeId", "5");
        values3.put("stopId", "21");
        db.insert("relation", null, values3);

        values3.put("routeId", "5");
        values3.put("stopId", "25");
        db.insert("relation", null, values3);

        values3.put("routeId", "5");
        values3.put("stopId", "26");
        db.insert("relation", null, values3);

        values3.put("routeId", "5");
        values3.put("stopId", "13");
        db.insert("relation", null, values3);

        values3.put("routeId", "5");
        values3.put("stopId", "14");
        db.insert("relation", null, values3);

        values3.put("routeId", "5");
        values3.put("stopId", "15");
        db.insert("relation", null, values3);

        values3.put("routeId", "5");
        values3.put("stopId", "27");
        db.insert("relation", null, values3);

        values3.put("routeId", "5");
        values3.put("stopId", "5");
        db.insert("relation", null, values3);

        values3.put("routeId", "5");
        values3.put("stopId", "28");
        db.insert("relation", null, values3);

        values3.put("routeId", "5");
        values3.put("stopId", "16");
        db.insert("relation", null, values3);

        values3.put("routeId", "6");
        values3.put("stopId", "29");
        db.insert("relation", null, values3);

        values3.put("routeId", "6");
        values3.put("stopId", "30");
        db.insert("relation", null, values3);

        values3.put("routeId", "6");
        values3.put("stopId", "31");
        db.insert("relation", null, values3);

        values3.put("routeId", "6");
        values3.put("stopId", "32");
        db.insert("relation", null, values3);

        values3.put("routeId", "6");
        values3.put("stopId", "3");
        db.insert("relation", null, values3);

        values3.put("routeId", "6");
        values3.put("stopId", "2");
        db.insert("relation", null, values3);

        values3.put("routeId", "6");
        values3.put("stopId", "33");
        db.insert("relation", null, values3);

        values3.put("routeId", "6");
        values3.put("stopId", "1");
        db.insert("relation", null, values3);

        values3.put("routeId", "7");
        values3.put("stopId", "34");
        db.insert("relation", null, values3);

        values3.put("routeId", "7");
        values3.put("stopId", "35");
        db.insert("relation", null, values3);

        values3.put("routeId", "7");
        values3.put("stopId", "36");
        db.insert("relation", null, values3);

        values3.put("routeId", "7");
        values3.put("stopId", "3");
        db.insert("relation", null, values3);

        values3.put("routeId", "7");
        values3.put("stopId", "37");
        db.insert("relation", null, values3);

        values3.put("routeId", "7");
        values3.put("stopId", "38");
        db.insert("relation", null, values3);

        values3.put("routeId", "7");
        values3.put("stopId", "12");
        db.insert("relation", null, values3);

        values3.put("routeId", "7");
        values3.put("stopId", "39");
        db.insert("relation", null, values3);

        values3.put("routeId", "8");
        values3.put("stopId", "1");
        db.insert("relation", null, values3);

        values3.put("routeId", "8");
        values3.put("stopId", "40");
        db.insert("relation", null, values3);

        values3.put("routeId", "8");
        values3.put("stopId", "41");
        db.insert("relation", null, values3);

        values3.put("routeId", "8");
        values3.put("stopId", "21");
        db.insert("relation", null, values3);

        values3.put("routeId", "8");
        values3.put("stopId", "42");
        db.insert("relation", null, values3);

        values3.put("routeId", "8");
        values3.put("stopId", "12");
        db.insert("relation", null, values3);

        values3.put("routeId", "8");
        values3.put("stopId", "22");
        db.insert("relation", null, values3);

        values3.put("routeId", "8");
        values3.put("stopId", "6");
        db.insert("relation", null, values3);

        values3.put("routeId", "8");
        values3.put("stopId", "16");
        db.insert("relation", null, values3);

        values3.put("routeId", "9");
        values3.put("stopId", "1");
        db.insert("relation", null, values3);

        values3.put("routeId", "9");
        values3.put("stopId", "48");
        db.insert("relation", null, values3);

        values3.put("routeId", "9");
        values3.put("stopId", "40");
        db.insert("relation", null, values3);

        values3.put("routeId", "9");
        values3.put("stopId", "41");
        db.insert("relation", null, values3);

        values3.put("routeId", "9");
        values3.put("stopId", "21");
        db.insert("relation", null, values3);

        values3.put("routeId", "9");
        values3.put("stopId", "20");
        db.insert("relation", null, values3);

        values3.put("routeId", "9");
        values3.put("stopId", "43");
        db.insert("relation", null, values3);

        values3.put("routeId", "9");
        values3.put("stopId", "44");
        db.insert("relation", null, values3);

        values3.put("routeId", "9");
        values3.put("stopId", "18");
        db.insert("relation", null, values3);
        db.close();
    }

    public String matchStop(String data1,String data2)
    {
        String ab=null;
        String Source=null;
        String Destination=null;
        String latitude1=null;
        String longitude1=null;
        String latitude2=null;
        String longitude2=null;
        SQLiteDatabase db=this.getReadableDatabase();
        String select1Query = "SELECT * FROM stop WHERE stopName='"+data1+"'";
        Cursor cursor=db.rawQuery(select1Query,null);
        if(cursor.moveToFirst()){
            do{
                Source=cursor.getString(cursor.getColumnIndex("stopName"));
                latitude1=cursor.getString(cursor.getColumnIndex("lat"));
                longitude1=cursor.getString(cursor.getColumnIndex("lon"));
                /*Log.e("LAt Lan",latitude+longitude+"");
                Log.e("N",Source+"");*/
            }
            while(cursor.moveToNext());
        }
        String select2Query = "SELECT * FROM stop WHERE stopName='"+data2+"'";

        Cursor cursor1=db.rawQuery(select2Query,null);
        if(cursor1.moveToFirst()){
            do{
                Destination=cursor1.getString(cursor1.getColumnIndex("stopName"));
                latitude2=cursor1.getString(cursor1.getColumnIndex("lat"));
                longitude2=cursor1.getString(cursor1.getColumnIndex("lon"));
            }
            while(cursor.moveToNext());

        if(Source!=null && Destination!=null)
        {

            ab= (Source+",,"+Destination+",,"+latitude1+",,"+longitude1+",,"+latitude2+",,"+longitude2);
        }
        else
        {

            }
        if(latitude1!=null && longitude1!=null){

        }
        }

        return ab;
    }

    public String getroutenumber(String Source,String Destination) {
        System.out.println("Inside GetRouteNumber");
        String number=null;
        String number1 = null;
        String number2 = null;
        SQLiteDatabase db = this.getReadableDatabase();
        String selectQuery1="SELECT * FROM stop WHERE stopName='"+Source+"'";
        Cursor cursor1 = db.rawQuery(selectQuery1, null);
        if (cursor1.moveToFirst()) {
            do {


                number1 = cursor1.getString(cursor1.getColumnIndex("stopId"));
                Log.e("Source id", number1 );
            }

            while (cursor1.moveToNext());

        }
        String selectQuery2="SELECT * FROM stop WHERE stopName='"+Destination+"'";
        Cursor cursor2 = db.rawQuery(selectQuery2, null);
        if (cursor2.moveToFirst()) {
            do {


                number2 = cursor2.getString(cursor2.getColumnIndex("stopId"));
                Log.e("Destination Id", number2);
            }

            while (cursor1.moveToNext());

        }
        String selectQuery = "SELECT stopId FROM relation WHERE routeId in(SELECT routeId FROM relation WHERE stopId='"+number1+"')and stopId in(SELECT  stopId FROM relation WHERE routeId in(SELECT routeId FROM relation WHERE stopId='"+number2+"'))";

        Cursor cursor = db.rawQuery(selectQuery, null);
        System.out.println(cursor);
        if (cursor.moveToFirst()) {
            do {

                Log.e("inside", "of do");
                number = cursor.getString(cursor.getColumnIndex("routeNumber"));
                Log.e("Route Number", number );
            }

            while (cursor.moveToNext());

        }
        return number;

    }

}

My cat log

08-18 00:06:31.957: E/AndroidRuntime(22127): FATAL EXCEPTION: main
08-18 00:06:31.957: E/AndroidRuntime(22127): java.lang.IllegalStateException: Couldn't read row 0, col -1 from CursorWindow.  Make sure the Cursor is initialized correctly before accessing data from it.
08-18 00:06:31.957: E/AndroidRuntime(22127):    at android.database.CursorWindow.nativeGetString(Native Method)
08-18 00:06:31.957: E/AndroidRuntime(22127):    at android.database.CursorWindow.getString(CursorWindow.java:434)
08-18 00:06:31.957: E/AndroidRuntime(22127):    at android.database.AbstractWindowedCursor.getString(AbstractWindowedCursor.java:51)
08-18 00:06:31.957: E/AndroidRuntime(22127):    at com.routecounselor.Project_DB.getroutenumber(Project_DB.java:2141)
08-18 00:06:31.957: E/AndroidRuntime(22127):    at com.routecounselor.Map$1.onClick(Map.java:136)
08-18 00:06:31.957: E/AndroidRuntime(22127):    at  android.view.View.performClick(View.java:4421)
08-18 00:06:31.957: E/AndroidRuntime(22127):    at android.view.View$PerformClick.run(View.java:17903)
08-18 00:06:31.957: E/AndroidRuntime(22127):    at android.os.Handler.handleCallback(Handler.java:730)
08-18 00:06:31.957: E/AndroidRuntime(22127):    at android.os.Handler.dispatchMessage(Handler.java:92)
08-18 00:06:31.957: E/AndroidRuntime(22127):    at android.os.Looper.loop(Looper.java:213)
08-18 00:06:31.957: E/AndroidRuntime(22127):    at android.app.ActivityThread.main(ActivityThread.java:5225)
08-18 00:06:31.957: E/AndroidRuntime(22127):    at java.lang.reflect.Method.invokeNative(Native Method)
08-18 00:06:31.957: E/AndroidRuntime(22127):    at java.lang.reflect.Method.invoke(Method.java:525)
08-18 00:06:31.957: E/AndroidRuntime(22127):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:741)
08-18 00:06:31.957: E/AndroidRuntime(22127):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557)
08-18 00:06:31.957: E/AndroidRuntime(22127):    at dalvik.system.NativeStart.main(Native Method)

Can someone please detect where the error is?

1

1 Answers

0
votes

The error shown in your LogCat says that when you called getColumnIndex() from within getroutenumber() it returned -1, indicating that the column name does not exist in the retrieved data set. Make sure that your SQL query is correct and that the column name matches the column in your table exactly. If you can't figure out the problem, try incrementally replacing (just for the sake of debugging) the getColumnIndex() methods with the explicit column index and see where the error pops.