Только последнее значение вставляется в базу данных sqlite на iPhone - PullRequest
0 голосов
/ 15 февраля 2012

Я работаю над приложением iPhone в автономном режиме, в котором данные впервые поступают с сервера в формате JSON, я анализирую эти данные, сохраняю их в изменяемый массив, а затем вставляю эти значения массива в базу данных sqlite, но вставляется только одно значение или последнее значение.

Вот мой код для вставки:

-(void)insertData {
  NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
  NSString *documentsDir = [documentPaths objectAtIndex:0];
  NSString *databasePath=[documentsDir stringByAppendingPathComponent:@"paddleEight.sqlite"];
  NSLog(@"The Database Path is---> %@", databasePath);

  sqlite3 *database; 

  if(sqlite3_open([databasePath UTF8String], &database) == SQLITE_OK) {
    int i;  

    sqlite3_stmt *addStmt;
    NSString* sSqlSelect = [NSString stringWithFormat:@"insert into GalleryTabel(depth,imageUrl)VALUES(?,?);"];



    for (i = 1; i < [self.propertiesArray count]; i++)  
    {

        if(sqlite3_prepare_v2(database, [sSqlSelect UTF8String], -1, &addStmt, NULL) == SQLITE_OK)   
        {


            sqlite3_bind_text(addStmt, 1, [[[[[self.propertiesArray objectAtIndex:i]objectForKey:@"images"]objectForKey:@"primary"]objectForKey:@"type"] UTF8String],-1,SQLITE_TRANSIENT);
            sqlite3_bind_text(addStmt, 2, [[[[[self.propertiesArray objectAtIndex:i]objectForKey:@"images"]objectForKey:@"primary"]objectForKey:@"location"] UTF8String],-1,SQLITE_TRANSIENT);

        }

    }
    if(sqlite3_step(addStmt)==SQLITE_DONE) 
    {
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Add Record" message:@"Contact Added" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];    
        [alert show];
        [alert release];
        alert=nil;

    }
    else 
    {
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"record" message:@"record not created" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];   
        [alert show];
        [alert release];
        alert=nil;
    }

  }

}

Любая помощь высоко ценится. Спасибо заранее:

Ответы [ 2 ]

0 голосов
/ 15 февраля 2012

Вы готовите оператор несколько раз, но выполняете его только один раз.Вы должны подготовить оператор один раз (в случае, если вы используете одну и ту же инструкцию SQL), затем связать параметры и выполнить оператор вместо каждого элемента массива.

0 голосов
/ 15 февраля 2012

Попробуйте с этим принятым ответом. В нем показано, как сохранить значение массива в базе данных Только последнее значение вставлено в базу данных sqlite на iPhone

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...