[英]Can't read data using FMDB
我正在使用FMDB。 我創建並插入表中。 工作正常。
idx整數非空默認0主鍵自動遞增
topicId Varchar不是NULL
listChat BLOB NOT NULL
但是我無法從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];
[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;
}
您正在從數據庫中獲取鍵topicId
NSData
值。 您需要獲取NSString
值。 檢查上面的代碼。
看起來notes數組具有一個用於記錄的NSData對象,因此您的代碼沒有錯。 但是我猜測您需要topicId字符串,請改用[results stringForColumn@"topicId"]
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.