我希望这里有人能帮助我。
我需要将 NSMutableDictionary 插入 SQLite 数据库的一个单元格中。我可以将字符串等插入数据库,但是当我尝试插入字典时出现语法错误:
**Can't run query 'BEGIN TRANSACTION; UPDATE Database SET Column1 = {
Bad = "";
"End_Time" = 4;
Good = "";
Moderate = "";
Note = "";
} WHERE Title = Name; COMMIT TRANSACTION;' error message: unrecognized token: "{"**
为此,我使用以下代码:
NSString *sql2 = [NSString stringWithFormat:@"UPDATE Database SET Column%@ = %@ WHERE Title = %@",previousQuestion,adictionary,Name];
任何人都可以提供帮助或建议不同的方法吗?我需要能够将键/值存储在 1 个单元格中,因为还有 79 个单元格具有相似的数据,并且我需要引用数据库特定列中的每个特定键。
我尝试将字典转换为字符串(然后在检索时将字符串转换回字典)但这会导致同样的问题。 有什么建议吗?
非常感谢, 安德鲁
最佳答案
有两种方法可以做到这一点。 第一种方法:-
存档您的 NSMutableDictionary 将其转换为 NSData 并将其存储在您的 Sqlite 列中,该列的数据类型应为 blob 类型。归档这样的东西,
NSData *theDictionaryData = [NSKeyedArchiver archivedDataWithRootObject:yourDictionary];
在sqlite中绑定(bind)此数据,
sqlite3_bind_blob(addStmt, 5, theDictionaryData, -1, SQLITE_TRANSIENT);
现在从 sqlite 检索时间,
NSData *retrieveData = [[NSData alloc] initWithBytes:sqlite3_column_blob(selectstmt, 4) length:sqlite3_column_bytes(selectstmt, 4)];
最后将其转换为NSDictionary,
NSDictionary *dictionary = [NSKeyedUnarchiver unarchiveObjectWithData:retrieveData];
第二种方式:- 创建与 NSDictionary 的键数相同的列数。从每个键中获取数据并将其保存到相应的表列中。
关于ios - 将 NSMutableDictionary 插入 SQLite 数据库的 1 个单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21026234/