Ошибка: таблица не существует (очевидно, что она существует)

#android #android-sqlite

#Android #android-sqlite

Вопрос:

У меня в базе данных есть эта таблица Cast со столбцами ID и Actor , например

 ID  | Actor
---- ------
123 | Michael Douglas
123 | Robert Duval
  

Я хотел бы вернуть столбцы ID и Cast в моем курсоре для определенного идентификатора

 public Cursor getCastCursor(String ID){

        SQLiteDatabase db = getReadableDatabase();
        SQLiteQueryBuilder qb = new SQLiteQueryBuilder();

        String[] sqlSelect = new String[]{"ID","Actor"};
        String[] selectionArg = new String[]{ID};

        qb.setTables("Cast");
        Cursor c = qb.query(
                db,           //SQLiteDatabase db
                sqlSelect,    //String[] projectionIn
                "ID=?",       //String selection
                selectionArg, //String[] selectionArgs
                null,         //String groupBy
                null,         //String having
                null);        //String sortOrder
        c.moveToFirst();

        return c;
}
  

Я продолжаю получать эту ошибку и уверен, почему

нет такой таблицы: Приведение (код 1): , при компиляции: ВЫБЕРИТЕ ИДЕНТИФИКАТОР, актер ИЗ приведения, ГДЕ (ID =?)

Редактировать

Вот изображение моей базы данных. Очевидно, что таблица существует.

введите описание изображения здесь

Я создаю базу данных с помощью Python

 #Add countries, genres, directors, and actors tables 
def createTables(source):
    with sqlite3.connect(source) as connection:
        c = connection.cursor()
        c.execute("""Select * from Movies""")
        all_data = c.fetchall()
        c.execute("""CREATE TABLE IF NOT EXISTS Countries(ID TEXT,Country TEXT)""")
        c.execute("""CREATE TABLE IF NOT EXISTS Actors(ID TEXT, Actor TEXT)""")
        c.execute("""CREATE TABLE IF NOT EXISTS Genres(ID TEXT,Genre TEXT)""")
        c.execute("""CREATE TABLE IF NOT EXISTS Directors(ID TEXT,Director TEXT)""")

        for single_data in all_data:
            countries = returnCommaDelimitedList(single_data[18])
            directors = returnCommaDelimitedList(single_data[8])
            genres = returnCommaDelimitedList(single_data[6])
            actors = returnCommaDelimitedList(single_data[10])
            for single_actor in actors:
                c.execute("INSERT INTO Actors VALUES(?,?);",(single_data[0],single_actor))
            for single_country in countries:
                c.execute("INSERT INTO Countries VALUES(?,?);",(single_data[0],single_country))
            for single_director in directors:
                c.execute("INSERT INTO Directors VALUES(?,?);",(single_data[0],single_director))
            for single_genre in genres:
                c.execute("INSERT INTO Genres VALUES(?,?);",(single_data[0],single_genre))
  

Комментарии:

1. Возможно, на это жалуются Cast.Cast . Возможно, вам следует переименовать таблицу в Actors и / или столбец в name

2. Я уже пробовал это

3. @suku идентификатор не определен как строка

4. Если вы пытались переименовать таблицу или столбец без воссоздания базы данных, то да, имя таблицы «Cast» не может быть найдено

5. @cricket_007 Итак, я очистил, перестроил и переделал свой проект, а затем удалил и переустановил приложение, и это сделало свое дело.

Ответ №1:

Итак, я очистил, перестроил и переделал свой проект, а затем удалил и переустановил приложение, и это сделало свое дело.