加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Swift - SQLite中Data类型数据的插入、读取(BLOB类型字段)

发布时间:2020-12-14 06:15:08 所属栏目:百科 来源:网络整理
导读:我原来写一过一篇文章介绍如何使用第三方的 SQLiteBD 库来操作 SQLite 数据库( 点击查看)。当时存取的都是一些数字、字符串这样的基本数据类型,有网友问如果想存个图片进去应该怎么做。本文演示如何实现 Data 类型的数据存
我原来写一过一篇文章介绍如何使用第三方的 SQLiteBD库来操作 SQLite数据库( 点击查看)。当时存取的都是一些数字、字符串这样的基本数据类型,有网友问如果想存个图片进去应该怎么做。本文演示如何实现 Data类型的数据存取。

1,实现原理

(1)首先我们建表的时候,用于保存 Data数据的字段要使用大数据类型,比如: BLOB(二进制数据)
(2)读取操作同其他数据类型的读取没什么差别。不过插入的时候要注意,不能直接将数据拼接到 sql语句中,而是要使用预处理语句:
1
2
let sql = "insert into t_image(idata) values(?)"
db.execute(sql: sql,parameters:[imageData])


2,效果图

(1)程序启动后会自动判断是否存在图片表,没有的话就创建一张。表字段很简单,就一个 ID主键,和一个 BLOB类型的字段(用于存储图片数据)
(2)点击“ 保存”按钮,将项目中的 0.png这张图片存储到图片表中。
(3)点击“ 读取”按钮,从图片表中取出图片数据,并显示在 imageview中。


3,样例代码

2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
import UIKit
class ViewController : UIViewController {
@IBOutlet weak var imageView: UIImageView !
db: SQLiteDB !
override func viewDidLoad() {
super .viewDidLoad()
//获取数据库实例
db = .shared
//打开数据库
_ = db.openDB()
//如果表还不存在则创建表(其中uid为自增主键)
result = db.execute(sql: "create table if not exists t_image(uid integer primary key,idata blob)" )
print ( "表创建完毕:(result)" )
}
//点击保存
@IBAction saveData(_ sender: Any ) {
//获取图片并转换为Data
imageURL = Bundle .main.url(forResource: "0" ,withExtension: "png" )!
imageData = try! Data (contentsOf: imageURL)
//将Data数据插入到数据库
"insert into t_image(idata) values(?)"
result = db.execute(sql: sql,parameters:[imageData])
"数据保存完毕:(result)" )
}
//点击加载
loadData(_ sender: ) {
data = db.query(sql: "select * from t_image" )
if data.count > 0 {
//获取最后一行数据显示
image = data[data.count - 1]
if imgData = image[ "idata" ] as ? {
self .imageView.image = UIImage (data: imgData)
"数据读取完毕" )
}
}
}
didReceiveMemoryWarning() {
.didReceiveMemoryWarning()
}
}
源码下载: hangge_1578.zip

原文出自: www.hangge.com 转载请保留原文链接: http://www.hangge.com/blog/cache/detail_1578.html

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读