2014-10-20 5 views
0

Я использую FMDB. Я создаю и вставляю в таблицу. Он работает нормально.Не удается прочитать данные с помощью FMDB

IDX INTEGER NOT NULL DEFAULT 0 PRIMARY KEY AUTOINCREMENT

TopicID Varchar NOT NULL

listChat BLOB NOT NULL

enter image description here

Но я не могу получить все данные из спискаChat collumn. Вот мой код:

- (NSMutableArray*)readChatHistoryFromDatabaseWithTopicId:(NSString *)topicId { 
    NSMutableArray *listChat = [[NSMutableArray alloc] init]; 
    NSFileManager *fileManager = [NSFileManager defaultManager]; 
    NSString *path = [self databasePath]; 
    if ([fileManager fileExistsAtPath:path] == YES) { 
     FMDatabase *database = [FMDatabase databaseWithPath:path]; 
     if (database) { 
      [database open]; 
      NSString *query = [NSString stringWithFormat:@"SELECT * FROM %@ WHERE topicId=\"%@\"", OCSDK_CHAT_HISTORY_TABLE_NAME, topicId]; 
      FMResultSet *results = [database executeQuery:query]; 
      [results next]; 
      NSData *notesData = [results dataForColumn:@"listChat"]; 
      [listChat addObject:notesData]; 
      NSLog(@"notes: %@", listChat); 
     } 
     [database close]; 
    } 
    return listChat; 
} 

Он печати:

enter image description here

Что случилось с моим кодом?

ответ

0

Изменения кода:

- (NSMutableArray*)readChatHistoryFromDatabaseWithTopicId:(NSString *)topicId { 
    NSMutableArray *listChat = [[NSMutableArray alloc] init]; 
    NSFileManager *fileManager = [NSFileManager defaultManager]; 
    NSString *path = [self databasePath]; 
    if ([fileManager fileExistsAtPath:path] == YES) { 
     FMDatabase *database = [FMDatabase databaseWithPath:path]; 
     if (database) { 
      [database open]; 
      NSString *query = [NSString stringWithFormat:@"SELECT * FROM %@ WHERE topicId=\"%@\"", OCSDK_CHAT_HISTORY_TABLE_NAME, topicId]; 
      FMResultSet *results = [database executeQuery:query]; 
      while([results next]) { 

       NSString *noteString = [results stringForColumn:@"topicId"] 
       [listChat addObject: noteString]; 
       NSLog(@"notes: %@", listChat); 
      } 
     } 
     [database close]; 
    } 
    return listChat; 
} 

Вы выборка NSData значения из базы данных для ключа topicId. Вместо этого вам нужно получить значение NSString. Проверьте код выше.

0

Похоже, что массив примечаний имеет один объект NSData для записи, поэтому в коде нет ничего плохого. Но я думаю, что вы хотите строку topicId, вместо этого используйте [results [email protected]"topicId"].

Смежные вопросы