Невозможно прочитать данные с помощью FMDB
Я использую FMDB. Я создаю и вставляю в таблицу. Он работает нормально.
idx INTEGER NOT NULL DEFAULT 0 PRIMARY KEY AUTOINCREMENT
topicId Varchar NOT NULL
listChat BLOB NOT NULL
Но я не могу получить все данные из listChat 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;
}
Он печатает:
Что не так с моим кодом?
Изменение кода:
- (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
значения NSData
из базы данных для ключевого topicId
. Вместо этого вам нужно получить значение NSString
. Проверьте код выше.
Похоже, что массив примечаний имеет один объект NSData для записи, поэтому с вашим кодом ничего не получилось. Но я предполагаю, что вы хотите строку [results [email protected]"topicId"]
вместо этого используйте [results [email protected]"topicId"]
.
Похожие вопросы
Посмотрите другие вопросы по меткам ios sqlite fmdb или Задайте вопрос