Проблема
Существует только одна причина несоответствия типов данных: попытка вставить нецелое значение в столбец rowid или псевдоним rowid столбец.Любой другой столбец может хранить значения любого типа.
Как таковой столбец Обратный или столбец Слово был определен как псевдоним rowid столбец.
Псевдоним rowid определяется, когда вы специально кодируете column_name INTEGER PRIMARY KEY
(с ключевым словом AUTOINCREMENT или без него) или эквивалентный в соответствии с ROWID и INTEGER PRIMARYКЛЮЧ .
Поэтому
public static final String CREATE_TABLE =
"CREATE TABLE " + TABLE_NAME + "("
+ "Word" + " TEXT,"
+ "Reverse" + " TEXT"+")";
Не может быть тем, что использовалось для определения таблицы .
Распространенной причиной того, что таблица не определена должным образом, является частое заблуждение, что метод onCreate Помощника по базам данных запускается при каждом запуске приложения. onCreate будет автоматически запускаться только один раз при создании базы данных.При всех последующих запусках будет установлено, что база данных существует, и метод onCreate не будет запускаться автоматически.
Исправление
Исправление, по крайней мере при разработке приложения, дляприменить измененное определение таблицы, чтобы удалить базу данных или принудительно запустить метод onCreate после удаления каких-либо таблиц (в противном случае создание не удастся, или если определение таблицы включает CREATE TABLE IF NOT EXISTS ........
, что попытка создания таблицы будет пропущена).
Таким образом, вероятным решением является одно из следующих действий: -
- Удалить данные приложения.
- Удалить приложение.
- или (в вашем случае, так как с mnethod onUpgrade все в порядке (удаляет таблицу, а затем вызывает onCreate)), увеличьте номер версии (4-й параметр для супер-вызова SQLiteOpenHelper), например, измените
super(c,"Notes_Database",null,1);
на super(c,"Notes_Database",null,2);
После выполнения одного из перечисленных выше действий приложение может быть перезапущено, что должно представить измененную таблицу.