Я создаю приложение для упражнений, которое будет записывать используемый вес и количество «повторений», которые пользователь сделал в 4 «наборах» в день в течение 7 дней, чтобы пользователь мог просматривать их прогресс.Sqlite3 INSERT INTO Question × 377
Я создал таблицу базы данных с именем FIELDS
с 2 столбцами ROW
и FIELD_DATA
, и я могу использовать приведенный ниже код для загрузки данных в db. Но код имеет SQL заявление, в котором говорится,
INSERT OR REPLACE INTO FIELDS (ROW, FIELD_DATA)VALUES (%d, '%@');
Когда я изменить Постулаты к:
INSERT INTO FIELDS (ROW, FIELD_DATA)VALUES (%d, '%@');
Ничего не происходит. То есть данные не записываются в db.
Ниже приведен код:
#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.
Любая помощь будет принята с благодарностью, это сводит меня с ума!
Не могли бы вы дать нам краткое описание вашего datamodel? Я думаю, что есть проблема в том, как вы хотите хранить данные. – Zento