Sqlite3 INSERT INTO Вопрос × 377 - PullRequest
       10

Sqlite3 INSERT INTO Вопрос × 377

1 голос
/ 14 апреля 2010

Я создаю приложение для упражнений, которое будет записывать используемый вес и количество повторений, которые пользователь выполнил в 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.

Любая помощь будет принята с благодарностью, это сводит меня с ума!

1 Ответ

0 голосов
/ 14 апреля 2010

Предложения:

  • написать оператор вставки с жестко закодированными значениями, чтобы увидеть, работает ли вставка
  • Ваше имя файла не имеет пути. это предполагает текущий каталог при выполнении? из какого каталога он работает?
  • напишите сообщение на экран, если возможно, чтобы увидеть, какие значения вы получаете. Они верны?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...