В настоящее время я пытаюсь просто вставить новую строку в базу данных SQLite3 на своем iPad.Я делал это несколько раз раньше в других приложениях и просто скопировал код.Скопированные SELECT
запросы работают нормально, но если я пытаюсь INSERT
, он терпит неудачу при == SQLITE_DONE
Вот как я пытаюсь вставить в базу данных:
NSString *databaseName = @"Waypoints.sql";
NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDir = [documentPaths objectAtIndex:0];
NSString *databasePath = [documentsDir stringByAppendingPathComponent:databaseName];
sqlite3 *database;
if(sqlite3_open([databasePath UTF8String], &database) == SQLITE_OK)
{
NSString *statement = [NSString stringWithFormat:
@"INSERT INTO Waypoints (id, name, alt, ias, temp, tas, wd, ws, gs, mt, mh, dist, time, fuel, fuelrate) VALUES (%d,'New...','','','','','','','','','','','','','');", [self numberOfWaypoints]];
NSLog(@"Statement: %@", statement);
const char *sqlStatement = [statement cStringUsingEncoding:NSASCIIStringEncoding];
sqlite3_stmt *compiledStatement;
if(sqlite3_prepare_v2(database, sqlStatement, -1, &compiledStatement, NULL) == SQLITE_OK)
{
if(sqlite3_step(compiledStatement) == SQLITE_DONE)
NSLog(@"DATABASE: Adding: Success");
else
NSLog(@"DATABASE: Adding: Failed");
}
else
NSLog(@"Error. Could not add Waypoint.");
sqlite3_finalize(compiledStatement);
}
sqlite3_close(database);
Если я запускаю этот код нажатием кнопки, он выводит DATABASE: Adding: Failed
в консоли.
Оператор NSLogged выглядит следующим образом:
INSERT INTO Waypoints (id, name, alt, ias, temp, tas, wd, ws, gs, mt, mh, dist, время, топливо, горючее) ЗНАЧЕНИЯ (2, 'New ...', '', '', '', '','', '', '', '', '', '', '', '', '');
Что прекрасно работает, если я вставлю его в терминал (подключенв тот же файл базы данных).
Это подводит меня к выводу: что может быть причиной этой проблемы?
Я подумал о, возможно, правах записи в файл.Может быть, но он не в комплекте, но уже скопирован в папку документов на устройстве.
Пожалуйста, помогите, как я могу заставить это работать?