2013-08-11 3 views
4

Я пытаюсь вставить новые данные в таблицу SQLite.SQLite: ошибка SQL или отсутствующая база данных при вставке данных в таблицу

  • Я знаю, что код вставки правильно, потому что я использую его для другой таблицы и она отлично работает
  • Я знаю, что база данных и таблицы созданы и существую, потому что я могу см. их в браузере SQLite.

Но что-то в SQLite синтаксис создания или вставки неправильно, потому что я получаю эту ошибку:

SQL error or missing database

Вот мой код:

CREATE TABLE IF NOT EXISTS Theory_answers ("questionID" INTEGER,"answerID" INTEGER,"answerText" TEXT, "isTrue" INTEGER) 

INSERT INTO Theory_answers (questionID, answerID, answerText,isTrue) VALUES ("1","1",text,"0") 
+0

Пожалуйста, проверьте это, если questionId является первичным ключом ??? –

+0

FWIW, вы можете получить ту же ошибку в некоторых версиях sqlite, когда вы вставляете сразу несколько значений. – Jess

ответ

6

это должно быть. ...

VALUES ("1","1",text,"0") -> VALUES (1,1,'text',0) 

Или

VALUES ("1","1","text","0") <-- if you need to double quote all values? 

Глядя на эту link, она предполагает вставки сделаны с одинарной кавычки вокруг текста и без кавычек вокруг чисел ...

sqlite> INSERT INTO Books(Id, Title, Author, ISBN) ...> VALUES(1, 'War and Peace', 'Leo Tolstoy', '978-0345472403');

+0

Спасибо. Действительно, это были цитаты. Я проголосовал, но кажется, что Йоахим ответил так же первым :( – Luda

+0

@Luda, вы удалили цитаты из цифр, чтобы заставить их работать? Были ли вы одиночные или двойные кавычки? – christiandev

+0

@Luda, сортировать ответы по старейшим :) – christiandev

3

Есть два варианта ошибки, которые я может видеть, если это на самом деле в SQL, который вы показываете;

  • Вы не завершения каждой строки с ;, что делает SQLite не понимает, что это два отдельных заявления.

  • Вы забыли указать «текст» в своем заявлении о вставке.

Обычно ошибка вы о том, из-за SQLite не найти базу данных вы просите его, чтобы открыть, хотя, то, что очень трудно отлаживать, не видя никакого кода.

1

Если эта ошибка возникает при добавлении нового столбца в/или изменении таблицы SQLite, это, скорее всего, потому, что таблица все еще находится в кеше приложения. Самое легкое исправление, если вы находитесь в стадии разработки, - это перейти в Настройки-> Приложения-> Приложение-> Хранение-> Удалить данные. И это очистит все кэшированные воспоминания.

В противном случае программным путем вы можете УДАЛИТЬ ТАБЛИЦУ YOUR_TABLE и заново создать новую.

Надеюсь, это поможет и другим.

0

Эта проблема может возникнуть, когда курсор не закрыт. в android и на нескольких языках, все курсоры должны быть закрыты перед запуском другого запроса.

вы должны найти все «выбрать» запрос перед новым запросом и закройте все curser

final Cursor cur = mDb.rawQuery(
     "select * from mytable;", 
. 
. 
. 
cur.close(); 

если все курсор закрыт, и ваш запрос правильно, Ваш код будет работать правильно.

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