Agregar una segunda tabla en una base de datos

¡Esta es mi primera publicación! ¡Espero que me puedas ayudar! :-)

Utilicé el código proporcionado por NotePadExample del documento de desarrolladores para crear una base de datos. Ahora quiero agregar una segunda tabla para almacenar datos diferentes. Puedo agregar notas sin problemas, y la tabla de notas se crea de manera similar a la tabla de rutas. Simplemente "copié" y edité el código dado, pero cuando trato de insertar en la nueva tabla, aparece un error que dice:

"0ERROR / Base de datos (370): android.database.sqlite.SQLiteException: no existe dicha tabla: rutas:, al compilar: INSERTAR EN rutas (línea, llegada, duración, inicio) VALORES (?,?,?,?);"

¿Puede alguien echar un vistazo rápido a mi clase DbAdapter, especialmente el método onCreate (). y darme una pista o una solución? Realmente no veo ningún problema. Mi código se compila sin ningún error.

CÓDIGO:
public class DbAdapter {

public static final String KEY_FROM  = "title";
public static final String KEY_TO    = "body";
public static final String KEY_ROWID = "_id";

public static final String KEY_START    = "start";
public static final String KEY_ARRIVAL  = "arrival";
public static final String KEY_LINE     = "line";
public static final String KEY_DURATION = "duration";

private static final String DATABASE_NAME           = "data";
private static final String DATABASE_NOTESTABLE     = "notes";
private static final String DATABASE_ROUTESTABLE    = "routes";

private static final String TAG = "DbAdapter";
private DatabaseHelper mDbHelper;
private SQLiteDatabase mDb;

/**
 * Database creation sql statement
 */
private static final String DATABASE_CREATE_NOTES =
        "create table notes (_id integer primary key autoincrement, "
                + "title text not null, body text not null)";

private static final String DATABASE_CREATE_ROUTES =
    "create table routes (_id integer primary key autoincrement, "
            + "start , arrival , " 
            + "line , duration );";

private static final int DATABASE_VERSION = 3;

private final Context mCtx;

private static class DatabaseHelper extends SQLiteOpenHelper {
    DatabaseHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL(DATABASE_CREATE_NOTES);
        Log.d(TAG, "created notes table");

        db.execSQL(DATABASE_CREATE_ROUTES);
        Log.d(TAG, "created routes table");
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        Log.w(TAG, "Upgrading database from version " + oldVersion + " to "
                + newVersion + ", which will destroy all old data");
        db.execSQL("DROP TABLE IF EXISTS notes");
        db.execSQL("DROP TABLE IF EXISTS routes");
        onCreate(db);
    }
}

/**
 * Constructor - takes the context to allow the database to be
 * opened/created
 * 
 * @param ctx the Context within which to work
 */
public DbAdapter(Context ctx) {
    this.mCtx = ctx;
}

/**
 * Open the notes database. If it cannot be opened, try to create a new
 * instance of the database. If it cannot be created, throw an exception to
 * signal the failure
 * 
 * @return this (self reference, allowing this to be chained in an
 *         initialization call)
 * @throws SQLException if the database could be neither opened or created
 */
public DbAdapter open() throws SQLException {
    mDbHelper = new DatabaseHelper(mCtx);
    mDb = mDbHelper.getWritableDatabase();
    return this;
}

public void close() {
    mDbHelper.close();
}


/**
 * Create a new note using the title and body provided. If the note is
 * successfully created return the new rowId for that note, otherwise return
 * a -1 to indicate failure.
 * 
 * @param title the title of the note
 * @param body the body of the note
 * @return rowId or -1 if failed
 */
public long createNote(String title, String body) {

    ContentValues initialValues = new ContentValues();
    initialValues.put(KEY_FROM, title);
    initialValues.put(KEY_TO, body);

    return mDb.insert(DATABASE_NOTESTABLE, null, initialValues);
}

/**
 * Create a new route using the title and body provided. If the route is
 * successfully created return the new rowId for that route, otherwise return
 * a -1 to indicate failure.
 * 
 * @param start the start time of the route
 * @param arrival the arrival time of the route
 * @param line the line number of the route
 * @param duration the routes duration 
 * @return rowId or -1 if failed
 */

public long createRoute(String start, String arrival, String line, String duration){

    ContentValues initialValues = new ContentValues();
    initialValues.put(KEY_START, start);
    initialValues.put(KEY_ARRIVAL, arrival);
    initialValues.put(KEY_LINE, line);
    initialValues.put(KEY_DURATION, duration);

    return mDb.insert(DATABASE_ROUTESTABLE, null, initialValues);
}

/**
 * Delete the note with the given rowId
 * 
 * @param rowId id of note to delete
 * @return true if deleted, false otherwise
 */
public boolean deleteNote(long rowId) {
    return mDb.delete(DATABASE_NOTESTABLE, KEY_ROWID + "=" + rowId, null) > 0;
}

/**
 * Return a Cursor over the list of all notes in the database
 * 
 * @return Cursor over all notes
 */
public Cursor fetchAllNotes() {
    return mDb.query(DATABASE_NOTESTABLE, new String[] {KEY_ROWID, KEY_FROM,
            KEY_TO}, null, null, null, null, null);
}

/**
 * Return a Cursor over the list of all routes in the database
 * 
 * @return Cursor over all routes
 */
public Cursor fetchAllRoutes() {
    return mDb.query(DATABASE_ROUTESTABLE, new String[] {KEY_ROWID, KEY_START,
            KEY_ARRIVAL, KEY_LINE, KEY_DURATION}, null, null, null, null, null);
}

/**
 * Return a Cursor positioned at the note that matches the given rowId
 * 
 * @param rowId id of note to retrieve
 * @r,eturn Cursor positioned to matching note, if found
 * @throws SQLException if note could not be found/retrieved
 */
public Cursor fetchNote(long rowId) throws SQLException {
    Cursor mCursor =
            mDb.query(true, DATABASE_NOTESTABLE, new String[] {KEY_ROWID,
                    KEY_FROM, KEY_TO}, KEY_ROWID + "=" + rowId, null,
                    null, null, null, null);
    if (mCursor != null) {
        mCursor.moveToFirst();
    }
    return mCursor;

}

/**
 * Return a Cursor positioned at the route that matches the given rowId
 * 
 * @param rowId id of route to retrieve
 * @return Cursor positioned to matching route
 * @throws SQLException if note could not be found/retrieved
 */
public Cursor fetchRoute(long rowId) throws SQLException {
    Cursor mCursor =
            mDb.query(true, DATABASE_ROUTESTABLE, new String[] {KEY_ROWID,
                    KEY_START, KEY_ARRIVAL, KEY_LINE, KEY_DURATION}, KEY_ROWID + "=" + rowId, null,
                    null, null, null, null);
    if (mCursor != null) {
        mCursor.moveToFirst();
    }
    return mCursor;

}

/**
 * Update the note using the details provided. The note to be updated is
 * specified using the rowId, and it is altered to use the title and body
 * values passed in
 * 
 * @param rowId id of note to update
 * @param title value to set note title to
 * @param body value to set note body to
 * @return true if the note was successfully updated, false otherwise
 */
public boolean updateNote(long rowId, String title, String body) {
    ContentValues args = new ContentValues();
    args.put(KEY_FROM, title);
    args.put(KEY_TO, body);
    return mDb.update(DATABASE_NOTESTABLE, args, KEY_ROWID + "=" + rowId, null) > 0;
}

public void deleteRoutesTable(SQLiteDatabase db){
    db.delete("routes", null, null);
}
}
AÑADIR

Quiero implementar un método como

public void deleteTableRoutes(SQLiteDataBase db){
 db.delete("routes", null, null);
}

Mi problema: quiero llamar a esta función desde un punto en el que no tengo referencia a mi base de datos (que yo sepa) para pasar como argumento para mis deleteTableRoutes (SQLiteDataBase) ...

Respuestas a la pregunta(2)

Su respuesta a la pregunta