У меня есть следующий код, и когда я компилирую его в терминале, он возвращает сообщение «Ошибка SQL». Я думаю, что функция sqlite3_open не открывает базу данных, а вместо этого создает новую каждый раз, а функция обратного вызова не вызывается.OS - это macos.
#include <stdio.h>
#include <sqlite3.h>
static int my_special_callback(void *unused, int count, char **data, char **columns)
{
int idx;
printf("There are %d column(s)\n", count);
for (idx = 0; idx < count; idx++) {
printf("The data in column \"%s\" is: %s\n", columns[idx], data[idx]);
}
printf("\n");
return 0;
}
int main(int argc, const char * argv[]) {
sqlite3* db;
int rc = sqlite3_open ("test.db", &db);
if (rc)
{
fprintf(stderr, "error: %s\n", sqlite3_errmsg (db));
return 0;
}
else{
printf("DB\n");
}
rc = sqlite3_exec(db, "SELECT * FROM user", my_special_callback, 0, NULL);
if( rc != SQLITE_OK ) {
fprintf(stderr, "SQL error: \n");
} else {
fprintf(stdout, "Operation done successfully\n");
}
sqlite3_close(db);
return 0;
}