Я создаю приложение для упражнений, которое будет записывать используемый вес и количество повторений, которые пользователь выполнил в 4 «сетах» в день в течение 7 дней, чтобы пользователь мог просматривать их прогресс.
Я создал таблицу базы данных с именем FIELDS
с 2 столбцами ROW
и FIELD_DATA
, и я могу использовать приведенный ниже код для загрузки данных в базу данных. Но в коде есть SQL-оператор, который говорит:
INSERT OR REPLACE INTO FIELDS (ROW, FIELD_DATA)VALUES (%d, '%@');
Когда я меняю статус на:
INSERT INTO FIELDS (ROW, FIELD_DATA)VALUES (%d, '%@');
Ничего не происходит. То есть никаких данных не записано в БД.
Ниже приведен код:
#define kFilname @"StData.sqlite3"
- (NSString *)dataFilePath
{
NSArray *paths = NSSearchPathForDirectoriesInDomains
(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
return [documentsDirectory stringByAppendingPathComponent:kFilname];
}
-(IBAction)saveData:(id)sender;
{
for (int i = 1; i <= 8; i++)
{
NSString *fieldName = [[NSString alloc]initWithFormat:@"field%d", i];
UITextField *field = [self valueForKey:fieldName];
[fieldName release];
NSString *insert = [[NSString alloc] initWithFormat:
@"INSERT OR REPLACE INTO FIELDS (ROW, FIELD_DATA)
VALUES (%d, '%@');",i, field.text];
// sqlite3_stmt *stmt;
char *errorMsg;
if (sqlite3_exec (database, [insert UTF8String],
NULL, NULL, &errorMsg) != SQLITE_OK)
{
// NSAssert1(0, @"Error updating table: %s", errorMsg);
sqlite3_free(errorMsg);
}
}
sqlite3_close(database);
}
Так, как мне изменить код, чтобы сделать то, что я хочу? Поначалу это казалось простым изменением SQL-оператора, но, очевидно, их должно быть больше. Я новичок в Objective-C и iPhone программирования.
Я не новичок в использовании SQL-операторов, так как несколько лет создавал веб-приложения в ASP.
Любая помощь будет принята с благодарностью, это сводит меня с ума!