https://www.sqlite.org/rescode.html#misuse
Вот мой ( очень тривиальный код).
Оператор, который я хочу выполнить:
CREATE TABLE 'T_COMPANY' ('ID' INTEGER NOT NULL, ТЕКСТ «ИМЯ» NOT NULL, ПЕРВИЧНЫЙ КЛЮЧ (АВТОИНКРЕМЕНТ «ID»)
Запрос составлен правильно по верхнему коду, что подтверждает журнал, который я создаю:
Код: Выделить всё
- SQLITE prepare statement error.
- Error code: 21
- Statement:
CREATE TABLE 'T_COMPANY' ('ID' INTEGER NOT NULL,'NAME' TEXT NOT NULL, PRIMARY KEY('ID' AUTOINCREMENT))
- Address: (nil)
static int sqlInitDatabase(sqlite3 *pDb, const char *dbfile)
{
int rc;
if(SQLITE_OK != (rc = sqlite3_initialize())) {
fprintf(stderr, "- Error initializing SQLITE engine. Error code: %d\n Aborting.\n", rc);
return rc;
}
if(SQLITE_OK != (rc = sqlite3_open_v2(dbfile, &pDb, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL))) {
fprintf(stderr, "- Fail to load or create DB file %s.\n- Error code: %d\n Aborting.\n", dbfile, rc);
return rc;
}
return rc;
}
static void sqlCloseDatabase(sqlite3 *pDb)
{
if(pDb != NULL) {
sqlite3_close(pDb);
sqlite3_shutdown();
}
}
int sqlDeployDatabase(char *name)
{
sqlite3 *pDb;
sqlite3_stmt *stmt;
char *query;
int rc;
if(name == NULL || strcmp(name, "") == 0) {
fprintf(stderr, "- Database name cannot be empty.\n- Aborting\n");
return -1;
}
if(SQLITE_OK != (rc = sqlInitDatabase(pDb, name))) {
return rc;
}
for(int i = 0; i
Подробнее здесь: [url]https://stackoverflow.com/questions/79174531/sqlite-getting-error-21-when-using-sqlite3-prepare-v2[/url]
Мобильная версия