Неважно, оказалось, что это была другая ошибка - вызывал отдельный файл JSON и забыл удалить запятую ...
Это обращено в FAQ SQLite. Вопрос № 1.
Который указывает:
Как я создаю поле AUTOINCREMENT?
Короткий ответ: столбец объявил, что ЦЕЛОЧИСЛЕННЫЙ PRIMARY KEY будет автоинкремент.
Вот длинный ответ: Если Вы объявляете, что столбец таблицы ЦЕЛОЧИСЛЕННЫЙ PRIMARY KEY, то каждый раз, когда Вы вставляете ПУСТОЙ УКАЗАТЕЛЬ в тот столбец таблицы, ПУСТОЙ УКАЗАТЕЛЬ автоматически преобразовывается в целое число, которое является одним большим, чем самое большое значение того столбца по всем другим строкам в таблице, или 1, если таблица пуста. (Если самый большой целочисленный ключ, 9223372036854775807, то неиспользованное значение ключа выбрано наугад.), Например, предположите, что у Вас есть таблица как это:
CREATE TABLE t1( a INTEGER PRIMARY
KEY, b INTEGER );
С этой таблицей, оператором
INSERT INTO t1 VALUES(NULL,123);
логически эквивалентно высказыванию:
INSERT INTO t1 VALUES((SELECT max(a) FROM t1)+1,123);
Существует названная функцияsqlite3_last_insert_rowid()
который возвратит целочисленный ключ для новой операции вставки.Обратите внимание, что целочисленный ключ является одним большим, чем самый большой ключ, который был в таблице только до вставки. Новый ключ в настоящее время будет уникален по всем ключам в таблице, но это могло бы наложиться с ключами, которые были ранее удалены из таблицы. Для создания ключей, которые уникальны за время жизни таблицы добавьте АВТОИНКРЕМЕНТНОЕ ключевое слово к ЦЕЛОЧИСЛЕННОМУ объявлению PRIMARY KEY. Затем выбранный ключ будет еще одним, чем, чем самый большой ключ, который когда-либо существовал в той таблице. Если самый большой ключ ранее существовал в той таблице, то ВСТАВКА перестанет работать с кодом ошибки SQLITE_FULL.
Вы могли попробовать
CREATE TABLE fileInfo ( fileid INTEGER PRIMARY KEY AUTOINCREMENT, name STRING, status INTEGER NOT NULL );
Похоже, что AUTO_INCREMENT должен быть АВТОИНКРЕМЕНТОМ, см. http://www.sqlite.org/syntaxdiagrams.html#column-constraint