sqlite3的图片的(二进制数据)存取操作
前言
上篇介绍了sqlite3的一些常用插入操作方法和注意事项,在实际项目中遇到了图片缓存的问题,由于服务器不是很稳定,且受到外界环境的干扰(例如断电,图片存储挂掉,图片存储速度过慢,造成的接口调用失败等等),一个数据结构中除了普通字段(int string),还包括图片数据,所以还需要将图片数据进行缓存,图片缓存与普通的数据库字段值缓存有所不同,下面介绍一下简单方法。
开发示例
此demo仅供学习使用。
sqlite3支持对二进制数据的缓存,在实际的编程开发当中我们经常要处理一些大容量二进制数据的存储,如图片、音乐、视频等等。对于这些二进制数据,我们不能像处理普通的文本那样,但是我们可以用blob来存储。sqlite官方文档https://www.sqlite.org/datatype3.html#section_1对blob 字段的解释是
BLOB. The value is a blob of data, stored exactly as it was input。
即数据不做任何转换,以输入形式存储。因此 BOLB通常用来存储二进制大对象。
sqlite3_bind_blob示例代码
1 | char* cmdCreatBlobTable = "create table SqliteBlobTest (id integer , pic blob); //首先创建一个可插入blob类型的表 。 |
测试结果
总结
经过这一个月工作之余的优化,终于把项目的缓存给做好了,其中也遇到了很多问题,例如sqlite的编码转换,图片缓存速度慢,还有db-journal文件操作慢,以及如何直观的让sqliteDb大小自动展现,自己也是查了官方英文文档才一步步解决各种坑。总结的好处就在于能够温故知新。