Проблема с извлечением данных Sqlite

#iphone #objective-c #cocoa-touch #ios #sqlite

#iPhone #objective-c #cocoa-touch #iOS #sqlite

Вопрос:

У меня есть база данных SQLite, и когда я пытаюсь получить данные из базы данных, я повторно получаю последний вставленный элемент. Как я могу получить все элементы без повторения.

Код, который я написал:

 - (NSMutableArray *) gettingData {


    sqlDict = [[NSMutableDictionary alloc] init];

    membersInfoArray =[[NSMutableArray alloc]init ];


     [self checkAndCreateDatabase];

    if (sqlite3_open([databasePath UTF8String], amp;database) == SQLITE_OK)
     {

    const char *sql = "select * from ProductList";

     sqlite3_stmt *selectstmt;
    if(sqlite3_prepare_v2(database, sql, -1, amp;selectstmt, NULL) == SQLITE_OK) 
    {
        while(sqlite3_step(selectstmt) == SQLITE_ROW)
        {


       NSString *prdbcode = [NSString stringWithUTF8String:(char *)sqlite3_column_text(selectstmt, 0)];

     [sqlDict setObject:prdbcode forKey:@"Barcode"];


     [prdbcode release];


      NSString *prdname = [NSString stringWithUTF8String:(char *)sqlite3_column_text(selectstmt, 1)]; 


     [sqlDict setObject:prdname forKey:@"ProductName"];

      [prdname release];
       NSString *prdDesc = [NSString stringWithUTF8String:(char *)sqlite3_column_text(selectstmt, 2)];
      [sqlDict setObject:prdDesc forKey:@"ProductDescription"];
      [prdDesc release];
      NSString *prdstatus = [NSString stringWithUTF8String:(char *)sqlite3_column_text(selectstmt, 3)];

     [sqlDict setObject:prdstatus forKey:@"ProductStatus"];
     [prdstatus release];
     [membersInfoArray addObject:sqlDict];
     [sqlDict release];

        }

     }

     sqlite3_finalize(selectstmt);   

     }

     sqlite3_close(database);
     return membersInfoArray;
    }
  

Я извлекаю данные следующим образом:

 NSMutableArray *sqlArray = [sqlViewController gettingData]; 
  

Спасибо.

Комментарии:

1. @Prabah В приведенном выше методе нет ничего плохого. Как вы получаете доступ к значениям? Не могли бы вы, пожалуйста, опубликовать и этот код?

2. хорошо, какой код?? вставка данных отсутствует?

3. @Prabah Вы, должно быть, выполняете итерацию возвращаемого массива. Этот код.

4. NSMutableArray *sqlArray = [Получение данных sqlViewController];

5. @Prabah попробуйте очистить сборку из приложения и удалить ваше приложение из симулятора и повторно запустить. В приведенном выше коде, который вы пишете, нет ничего плохого. И этого не должно быть, все равно откройте базу данных из установленного местоположения и проверьте записи.

Ответ №1:

Просто объявите свой массив глобально, а не объявляйте локально в вашем методе. Ваша проблема будет решена.