2013-02-11 1 views
0

Моя база данных хорошо работает для моего приложения перед этой загадочной проблемой. Я хотел добавить уникальный индекс в одну таблицу (listitems) для двух столбцов (list_id и item_id). В таблице отслеживается, какие элементы связаны с каждым списком, и я не хочу, чтобы в списках были дубликаты.Создание уникального индекса сбой для неизвестного исключения базы данных в Android

Так что я написал этот метод обновления базы данных, которая вызывается из onUpgrade (...)

private void upgradeTo3(SQLiteDatabase db) { 
    db.execSQL("CREATE UNIQUE INDEX IF NOT EXISTS '"+ 
     Contract.DATABASE_NAME +"'.list_item_unique_index ON "+ 
     Contract.ListItem.TABLENAME + 
     " ("+ Contract.ListItem.LIST +", " + Contract.ListItem.ITEM + ")"); 
} 

И это дает мне ошибку "unknown database 'my_database.db'"

Я получаю мой помощник базы данных с помощью этого конструктора, который использует ту же строку, что и SQL выше, но здесь она не вызывает ошибку. И я могу получить доступ к базе данных.

public DatabaseHelper(Context context) { 
    super(context, Contract.DATABASE_NAME, null, Contract.DATABASE_VERSION); 
} 

Кроме того, если я открываю DDMS в Eclipse, я могу видеть, что есть файл с именем «my_database.db» в файлах приложений.

У кого-то есть идея, почему база данных не существует в этом выполнении SQL?

ответ

0

Вернулся к http://www.sqlite.org/lang_createindex.html и заметил, что имя базы данных является необязательным в команде. Поэтому я удалил его из команды, так как он действительно должен знать, в какой базе данных он будет работать. И теперь это работает.

Смежные вопросы