iOS 数据存储

使用fmdb
如何封装
创建表
设置主键,主键要求
增:
删:
改:
查:

背景:将用户与人工客服的聊天消息存储下来,可以查询历史记录(一个用户对应多个客服,需要查询当前用户与所有客服的记录)
msgid TEXT PRIMARY KEY
将msgid设为了主键,接收到的消息msgid为后台生成(应该不会有重复吧),用户发出的消息id使用时间戳+会话id+发送方(0为用户,1为客服,2为提示),在用户发送消息和接收客服消息的时候存储到数据库(封装好的类,插入使用的sql是insert or replace)
问题:查到的消息只有一条而且是存的最后一条,被覆盖了?
设置了msgid为主键,使用insert or replace数据会被覆盖,使用insert into,又会报错Unknown error finalizing or resetting statement (19: UNIQUE constraint failed: cft_ucmsg_table.userid),但是主键明明是msgid,为什么错误信息是userid
将userid又拼接了时间戳,存储就没被新的数据覆盖,疑惑,难道userid才是主键?

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • @TOC IOS数据存储简介 在项目开发当中,我们经常会对一些数据进行本地缓存处理。离线缓存的数据一般都保存在AP...
    孔雨露阅读 616评论 0 3
  • iOS数据存储 https://www.jianshu.com/p/19fdbf81a086[https://ww...
    林希品阅读 1,504评论 0 1
  • 一、iOS沙盒机制 iOS的每个应用都有属于自己的存储空间,即沙盒应用只能访问自己的沙盒,不可访问其他区域。 沙盒...
    片片碎阅读 840评论 0 1
  • 如何存储数据 1、文件 3、NSUserDefaults 2、数据库 文件 1、沙盒 2、Plist 3、NSKe...
    来鸿去燕阅读 14,119评论 1 14
  • FMDB介绍 FMDB是iOS平台的SQLite数据库框架FMDB以OC的方式封装了SQLite的C语言API使用...
    charlotte2018阅读 3,323评论 0 8