直接用sqlite3处理iphone的短信
来源:互联网 发布:淘宝开店考试答案2017 编辑:程序博客网 时间:2024/06/03 20:54
由于iphone用sqlite3数据进行短信的存储。可以用sqlite3对数据库进行直接操作,清理垃圾短信。
- 用DiskAid连接iPhone,将 /private/var/mobile/Library/SMS/sms.db 文件下载到电脑里。
- 用sqlite3打开数据库文件,
- .table看到数据表
- select * from message
- delete from message where ROWID = xx; 提示 No such function: "read"
执行以下查询语句跳过触发器调用的read函数.欺骗一下数据库。
drop trigger insert_unread_message;drop trigger mark_message_unread;drop trigger mark_message_read;drop trigger delete_message;CREATE TRIGGER insert_unread_message AFTER INSERT ON message WHEN NOT new.flags = 2 BEGIN UPDATE msg_group SET unread_count = (SELECT unread_count FROM msg_group WHERE ROWID = new.group_id) + 1 WHERE ROWID = new.group_id; END;CREATE TRIGGER mark_message_unread AFTER UPDATE ON message WHEN old.flags = 2 AND NOT new.flags = 2 BEGIN UPDATE msg_group SET unread_count = (SELECT unread_count FROM msg_group WHERE ROWID = new.group_id) + 1 WHERE ROWID = new.group_id; END;CREATE TRIGGER mark_message_read AFTER UPDATE ON message WHEN NOT old.flags = 2 AND new.flags = 2 BEGIN UPDATE msg_group SET unread_count = (SELECT unread_count FROM msg_group WHERE ROWID = new.group_id) - 1 WHERE ROWID = new.group_id; END;CREATE TRIGGER delete_message AFTER DELETE ON message WHEN NOT old.flags = 2 BEGIN UPDATE msg_group SET unread_count = (SELECT unread_count FROM msg_group WHERE ROWID = old.group_id) - 1 WHERE ROWID = old.group_id; END;
就可以进行删除。
delete from message where xxxx
然后设置所有短信为已读
update msg_group set unread_count = 0
顺便整理一下
VACUUM;
还原触发器
drop trigger insert_unread_message;drop trigger mark_message_unread;drop trigger mark_message_read;drop trigger delete_message;CREATE TRIGGER delete_message AFTER DELETE ON message WHEN NOT read(old.flags) BEGIN UPDATE msg_group SET unread_count = (SELECT unread_count FROM msg_group WHERE ROWID = old.group_id) - 1 WHERE ROWID = old.group_id; END;CREATE TRIGGER insert_unread_message AFTER INSERT ON message WHEN NOT read(new.flags) BEGIN UPDATE msg_group SET unread_count = (SELECT unread_count FROM msg_group WHERE ROWID = new.group_id) + 1 WHERE ROWID = new.group_id; END;CREATE TRIGGER mark_message_read AFTER UPDATE ON message WHEN NOT read(old.flags) AND read(new.flags) BEGIN UPDATE msg_group SET unread_count = (SELECT unread_count FROM msg_group WHERE ROWID = new.group_id) - 1 WHERE ROWID = new.group_id; END;CREATE TRIGGER mark_message_unread AFTER UPDATE ON message WHEN read(old.flags) AND NOT read(new.flags) BEGIN UPDATE msg_group SET unread_count = (SELECT unread_count FROM msg_group WHERE ROWID = new.group_id) + 1 WHERE ROWID = new.group_id; END;
完成后将数据库文件传回手机。垃圾短信干净了。
- 直接用sqlite3处理iphone的短信
- IPhone中SQLite3的使用
- iphone上sqlite3的使用
- IPhone中SQLite3的使用
- [iPhone] 访问iPhone本地的数据库 sqlite3
- 学习iPhone开发中 sqlite3的使用
- 学习iPhone开发中 sqlite3的使用
- 访问iPhone本地的数据库 sqlite3
- 学习iPhone开发中 sqlite3的使用
- 学习iPhone开发中 sqlite3的使用
- 访问iPhone本地的数据库 sqlite3
- iphone开发中sqlite3的操作说明
- 学习iPhone开发中 sqlite3的使用
- 学习iPhone开发中 sqlite3的使用
- iphone 数据库(sqlite3)的用法操作
- 学习iPhone开发中 sqlite3的使用
- 学习iPhone开发中 sqlite3的使用
- iphone数据库(sqlite3)的用法操作
- 三星i9220卡刷的刷机教程
- Android应用程序运行过程分析(学习笔记--ITCAST黎活明)
- 特征向量的几何意义
- VC单选按钮控件(Radio Button)用法
- ReadKEY
- 直接用sqlite3处理iphone的短信
- How to test the Internet state
- 心底的梦想
- 特征向量和特征值的几何意义
- 使用classPath自动扫描装配(使用PostConstruct注解)
- 放下这八件事,你就离成功不远了
- 利用适配器思想减少应用间耦合扩散问题
- 输入输出重定向
- VC6.0工程升级到VS2010遇到问题及解决办法