Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android "android.database.sqlite.SQLiteException: no such table" error when executing query on database

I have a database which already contains a table "LocalLogin" and is properly set and can be queried without a problem, being set up the same way as my new table "PersonList". However when I try to execute a query on PersonList to select some values, I get the error

android.database.sqlite.SQLiteException: no such table: PersonList: , while compiling: SELECT ...

It gives me the idea that the table was never created, although I execute a create query in the onCreate method of my SQLiteOpenHelper class. Is having the same Database Name as LocalLogin the possible problem?

Here's the relevant code:

The Database Adapter class

public class GoingOutPersonListDbAdapter {
private static final String DATABASE_NAME = "GoingOutData";
private static final String DATABASE_TABLE_PERSONLIST = "PersonList";
private static final int DATABASE_VERSION = 1;

public static final String PERSONLIST_ID = "PersonList_id";
public static final String PERSONLIST_LOGIN = "Login";
public static final String PERSONLIST_PASSWORD = "Password";

private static final String TAG = "Debugstring";

private PersonListDatabaseHelper mPersonListDbHelper;
private SQLiteDatabase mDb;

private static final String DATABASE_CREATE = 
    "CREATE Table " + DATABASE_TABLE_PERSONLIST+ " ( "
    + PERSONLIST_ID + " integer PRIMARY KEY Autoincrement, "
    + PERSONLIST_LOGIN + " text NOT NULL,"
    + PERSONLIST_PASSWORD + " text NOT NULL );";

private final Context mCtx;

private static class PersonListDatabaseHelper extends SQLiteOpenHelper {
    PersonListDatabaseHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }
    @Override
    public void onCreate(SQLiteDatabase db) {
        Log.d(TAG,DATABASE_CREATE);
        db.execSQL(DATABASE_CREATE);
    }
}

public GoingOutPersonListDbAdapter(Context ctx) {
    this.mCtx = ctx;
}

public GoingOutPersonListDbAdapter open() throws SQLException {
    mPersonListDbHelper = new PersonListDatabaseHelper(mCtx);
    mDb = mPersonListDbHelper.getWritableDatabase();
    return this;
}

public Cursor searchPerson(String searchString) {
    return mDb.query(DATABASE_TABLE_PERSONLIST, new String[] {PERSONLIST_ID, PERSONLIST_LOGIN, PERSONLIST_PASSWORD}, searchString, null, null, null, null);
}

}

In my activity class:

private GoingOutPersonListDbAdapter mPersonListDbHelper;

...

mPersonListDbHelper = new GoingOutPersonListDbAdapter(this);
mPersonListDbHelper.open();

...

//loginEditText is properly set
Cursor personList = mPersonListDbHelper.searchPerson(GoingOutPersonListDbAdapter.PERSONLIST_LOGIN + " = '" + loginEditText + "'");
startManagingCursor(personList);
like image 611
Mats Raemen Avatar asked Mar 18 '26 10:03

Mats Raemen


1 Answers

If you're adding a new table, you need to increment your database version so onUpdate will fire and your database will be recreated with the new table.

like image 85
Barak Avatar answered Mar 19 '26 23:03

Barak