ios - 将 NSMutableDictionary 插入 SQLite 数据库的 1 个单元格

标签 ios objective-c sqlite nsdictionary nsmutabledictionary

我希望这里有人能帮助我。

我需要将 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/

相关文章:

ios - 从推送通知中将 JSON 有效负载数据转换为字符串

sql - 在sqlite中将子查询转换为左联接

ios - 使用 Swift 3 更新 Firebase 中的现有对象

ios - ios中collectionview滚动的动画

ios - Objective-C 中的 init 实际上做了什么?

objective-c - NSWindow 绑定(bind)加载事件用于控制和逻辑初始化

javascript - 在 SQLite 中生成平均值

python - sqlite3 : create function regexp with python

ios - 如何更改 CCTexture2D 颜色

ios - UICollectionView reloadData 仅刷新第一项