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转换为字符串(然后我会在检索时将字符串转回字典)但这会导致同样的问题.有什么建议?
非常感谢,安德鲁
他们有两种方法可以做到这一点. 第一种方式: -
存档您的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的键数相等的列数.从每个密钥中提取数据并将其保存在各自的表列中.
| 归档时间: |
|
| 查看次数: |
1904 次 |
| 最近记录: |