2013-04-15 1 views
0

Я пытаюсь использовать скомпилированные заявления SQLite для вставки строк в таблицу:sqlite3_prepare терпит неудачу с «рядом„СТОЛ“: ошибка синтаксиса»

rc = sqlite3_prepare(db, "INSERT INTO TABLE test VALUES (?,?,?,?)", -1, &stmt, 0); 
if(rc!=SQLITE_OK) 
    printf("%s", sqlite3_errmsg(db)); 

sqlite3_prepare возвращает 1, и sqlite3_errmsg возвращается:

"рядом "Таблица": ошибка синтаксиса"

ответ

3

Вы не должны ставить "TABLE" в запросе:

rc = sqlite3_prepare(db, "INSERT INTO test VALUES (?,?,?,?)", -1, &stmt, 0); 
if(rc!=SQLITE_OK) 
    printf("%s", sqlite3_errmsg(db)); 

это также рекомендуется использовать имена полей, в которые вы вставляете. Чтобы добавить поля в таблицу, ваши запросы не будут разбиты ...

2

TABLE является зарезервированным ключевым словом. Чтобы избежать ошибок синтаксиса, он должен быть замаскирована с помощью скобок,

INSERT INTO test VALUES (?,?,?,?) 
+0

Спасибо! Это было быстро :) – sashoalm

+0

приветствуется ': D' –

+0

Btw,' INSERT INTO [TABLE] 'все еще выдавал мне ошибку, на этот раз« синтаксическая ошибка около теста », но удаление TABLE полностью исправило эту ошибку и сейчас он возвращает успех. Не только «INSERT INTO test VALUES (?,?,?,?)» – sashoalm

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