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

Ade*_*ton 1 sqlite objective-c nsdictionary nsmutabledictionary ios

我希望有人可以帮助我.

我需要将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: "{"**
Run Code Online (Sandbox Code Playgroud)

为此,我使用以下代码:

NSString *sql2 = [NSString stringWithFormat:@"UPDATE Database SET Column%@ = %@ WHERE Title = %@",previousQuestion,adictionary,Name];
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮助或建议不同的方法吗?我需要能够将键/值存储在1个单元格中,因为将有79个具有相似数据的单元格,我需要从数据库的特定列引用每个特定键.

我已经尝试将Dictionary转换为字符串(然后我会在检索时将字符串转回字典)但这会导致同样的问题.有什么建议?

非常感谢,安德鲁

Tir*_*rth 7

他们有两种方法可以做到这一点. 第一种方式: -

存档您的NSMutableDictionary将其转换为NSData并将其存储在您的Sqlite列中,该数据类型应为blob类型.存档这样的东西,

 NSData *theDictionaryData = [NSKeyedArchiver archivedDataWithRootObject:yourDictionary]; 
Run Code Online (Sandbox Code Playgroud)

在sqlite中绑定此数据,

sqlite3_bind_blob(addStmt, 5, theDictionaryData, -1, SQLITE_TRANSIENT);
Run Code Online (Sandbox Code Playgroud)

现在从sqlite中检索时间,

NSData *retrieveData = [[NSData alloc] initWithBytes:sqlite3_column_blob(selectstmt, 4) length:sqlite3_column_bytes(selectstmt, 4)];
Run Code Online (Sandbox Code Playgroud)

最后将其转换为NSDictionary,

 NSDictionary *dictionary = [NSKeyedUnarchiver unarchiveObjectWithData:retrieveData];
Run Code Online (Sandbox Code Playgroud)

第二种方式: - 创建与NSDictionary的键数相等的列数.从每个密钥中提取数据并将其保存在各自的表列中.