iOS开发之SQLite总结

iOS本地持久化存储方式

  • NSUserDefaults:存储配置信息,适用小规模数据。NSUserDefaults的底层实现是以.plist文件进行存储的
  • SQLite:轻量级的关系型数据库,存储查询需求较多的数据。但是原生的SQLite API使用极为不便。通常使用封装了SQLite API的FMDB库
  • Core Data
  • KeyChain:用于存储一些私密信息,也用于应用之间数据共享。KeyChain里存储的信息不会因为App被删除而丢失。

数据库

数据库(database)是按照数据结构来组织,存储和管理数据的仓库。
大体上分为两种类型:

  • 关系型数据库:又分为PC端和嵌入式\移动端。
  • 对象型数据库

来看一些基本概念:
Data -> DataBase -> DataBaseManageSystem -> DataBaseSystem

  • Data:数据库存储的基本对象
  • DataBase:一个以某种有组织的方式存储的数据集合
  • DataBaseManageSystem:数据库管理系统是位于用户和操作系统之间的一层数据管理软件。移动端用的DBMS是SQLite3
  • DataBaseSystem:引入数据库系统后的系统,由数据库+数据库管理系统+应用系统+数据库管理成员(DBA)构成。一般情况称DataBaseSystem为数据库。注意与DataBase区分开来。

SQLite基本操作

创建数据库连接

sqlite3_open()将创建一个新的数据库文件,如果成功创建的话,将返回db指针

iOS开发之SQLite总结_第1张图片
playground
创建一张表格
iOS开发之SQLite总结_第2张图片

sqlite3_prepare_v2将SQL语句编译成字节代码,并返回状态码。
sqlite3_step运行编译语句
sqlite3_finalize删除编译语句,并避免资源泄漏


iOS开发之SQLite总结_第3张图片
插入操作

看到insertStatementString的两个问号,?其实相当于占位符。

sqlite3_bind_Int()的三个参数,第一个参数表示需要绑定的语句,第二个参数是一个非零的索引号,表示你要将语句绑定的位置,第三个参数表示值本身。

iOS开发之SQLite总结_第4张图片

那么一次怎么插入多行呢?

调用sqlite3_reset()方法,将编译语句重置为初始值。


iOS开发之SQLite总结_第5张图片
查询操作

需要将queryResultCol的值转换成Swift类型的字符串


iOS开发之SQLite总结_第6张图片

但是现在打印出的只有一行:1 | Ray
怎么将所有行都打印出来呢?使用While loop

iOS开发之SQLite总结_第7张图片
更新操作
iOS开发之SQLite总结_第8张图片
删除操作
iOS开发之SQLite总结_第9张图片
处理错误

用sqlite3_errmsg()从数据库中得到错误信息。


iOS开发之SQLite总结_第10张图片
关闭数据库连接

关于用Swift封装C API,以及SQLite.swift,我以后会补充。
参考博客:
理一下iOS本地持久化储存(侧重数据库SQLite)
SQLite Tutorial

你可能感兴趣的:(iOS开发之SQLite总结)