/* DATABASE INIT */
ret = sqlite3_open_v2(dbfile, &DB, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL);
if (SQLITE_OK != ret) {
printf("Could not open database.\n");
exit(1);
}
const char* zSql = "INSERT INTO abc VALUES (?)";
ret = sqlite3_prepare_v2(sites[DB, zSql, strlen(zSql), &s, NULL);
if (SQLITE_OK != ret) {
printf("Could not compile statement '%s', got %d.\n", zSql, ret);
exit(1);
}
Ну вот, пожалуйста. В чем дело? sqlite3_prepare_v2 всегда терпит неудачу.
Обновление:
Я попробовал предложения до сих пор, но без сигары.
Я создал простейший случай, о котором я мог подумать, со схемой:
CREATE TABLE abc(a INTEGER);
И код C, как указано выше, все еще не работает, получает сообщение «Не удалось скомпилировать оператор»
получил код возврата 26, который, по-видимому, означает SQLITE_NOTADB
. Так что, похоже, мой файл базы данных не ... файл базы данных. Странно, мне придется разобраться в этом.
CLI sqlite принимает файл и может показать схему, если я использую команду ".dump".
Я изменил имя файла базы данных с «data.db» на «data.sqlite». Теперь я получаю код возврата 1, вместо этого SQLITE_ERROR.
Обновление:
Я обращался к неправильному файлу, AKA ошибка пользователя .
Принятие одного из ответов, который указал на синтаксическую ошибку в моем неотредактированном вопросе.