SQLite的使⽤--SQLite语句⼀.SQLite的介绍
1.为什么要存储数据?
1.1 ⼿机数据⼤多都是从⽹络加载的,不存储,每次滚动界⾯都要从新发送⽹络请求加载数据,浪费流量    1.2 当⽤户没⽹的时候,就不能正常显⽰界⾯了
1.3 将数据存储到本地,不⽤每次加载,没⽹的时候也可从本地存储的数据拿来显⽰
2.存储数据的⽅式
Plist(NSArray\NSDictionary)
特点: 只能存储系统⾃带的数据类型, ⽐如NSDictory, NSArray等等. ⾃定义的对象⽆法存储
Preference(偏好设置\NSUserDefaults)
特点: 本质就是⼀个plist⽂件; 也是只能存储系统⾃带的数据类型, ⾃定义的对象⽆法存储
NSCoding(NSKeyedArchiver\NSkeyedUnarchiver)
特点: 可以存储⾃⼰定义的数据类型, 但是都是⼀次性的全数据操作
SQLite3
特点: 存储⼀些⼤批量的数据, 排序, 统计等操作
Core Data
特点: 对SQLite3的⼀层⾯向对象的包装, 本质还是要转换成为对应的SQL语句去执⾏在所有的存储⽅式中,SQLite速度最快,效率最⾼.
3.什么是SQLite?
SQLite是⼀款轻型的嵌⼊式关系数据库
它占⽤资源⾮常的低,在嵌⼊式设备中,可能只需要⼏百K的内存就够了
⽬前⼴泛应⽤于移动设备中存储数据(Android/iOS)
处理数据的速度⾮常快,效率⾮常⾼
4.什么是数据库?
数据库(Database)是按照数据结构来组织、存储和管理数据的仓库(类似于excel表格)
数据库可以分为2⼤种类(了解)
关系型数据库(主流)
对象型数据库
5.关系型数据库介绍
⼆.Navicat软件的破解
1.什么是Navicat?
Navicat是数据库管理软件,⽀持⼤部分主流数据库(包括SQLite)(收费,要破解)可以通过图形化界⾯的⽅式来管理数据库
2.有破解版,可以去⽹上搜索下载,⾃⼰安装,这⾥不做介绍
三.Navicat软件的使⽤
1.创建SQLite数据库
2.创建表
2.1 双击打开数据库,在tables中点击右键,选中NewTable
2.2 创建表中对应的字段,点击”+”添加字段
2.3 保存,要设置表格名称. 名称规范:  t_名称如: t_student
3.设置主键,添加数据
3.1 什么是主键
主键就相当于⾝份证⼀样,⽤来区分每⼀条数据
3.2 设置主键注意点
3.3 添加,删除,修改数据
3.31 直接点击”+” 添加数据
注意:主键的值不要修改
3.32 删除,选中⼀⾏,点击”-“ 直接删除
注意:删除⼀组数据后,主键值就不会再被回收使⽤. ⼀个主键值只对应⼀条数据,⽆论数据是否存在          3.33 修改数据
双击想要修改的数据,直接修改
四.SQLite的使⽤步骤
1.创建数据库(⼀个⽤于存储数据的⽂件)
通常后缀名为: .db 或 .sqlite
2.创建表⽤于存储数据
创建表时需要指定该表有哪些字段
⽐如学⽣表有:学号/姓名/年龄/⾝⾼等
3.对表进⾏增删改查操作
⽐如添加⼀条学⽣数据:型号:1/姓名:why/年龄:18/⾝⾼:1.88
五.SQL简介
1.怎么在程序中使⽤SQLite?
真实使⽤SQLite时⽤代码来操作的
2.怎么⽤代码操作SQLite?
使⽤SQL语句来操作
3.SQL介绍不做过多介绍,直接看下定义就⾏了
六.在代码中使⽤DDL(数据定义语句)
1.先导⼊libsqlite3.tba框架(c语⾔)
2.创建桥接⽂件,配置桥接⽂件(不会的话,看之前笔记)
3.创建数据库
// 创建数据库
// ⽂件路径 :
// 1.获取数据库的存放路径(沙盒中)
let filePath = "/Users/xiaomage/Desktop/123.sqlite"
let cString = filePath.cStringUsingEncoding(NSUTF8StringEncoding)!
// 2.定义数据库对象(后⾯还要⽤,定义⼀个属性替代)
// var db : COpaquePointer = nil
/
/ 3.打开/创建数据库对象
if sqlite3_open(cString, &db) == SQLITE_OK {
print("创建/打开数据库成功")
} else {
print("失败")
}
}
4.创建表
4.1 创建SQL语句
4.2 执⾏语句(要对语句进⾏判断)  if  语句 == SQLITE_OK      4.3 创建表格式
CREATE TABLE IF NOT EXISTS '表名' (
'字段名' 类型(INTEGER, REAL, TEXT, BLOB)
NOT NULL    不允许为空
PRIMARY KEY    主键
AUTOINCREMENT ⾃增长,
'字段名2' 类型,
...
)
4.4 语句说明
CREATE TABLE:创建⼀张表
IF NOT EXISTS:不存在则创建
't_student':表的名称
NOT NULL:不允许为空
PRIMARY KEY:主键
AUTOINCREMENT:⾃动增加
'id' INTEGER:有⼀个ID字段,类型是INTEGER
5.删除表
5.1删除表的格式
DROP TABLE IF EXISTS '表名';
5.2 语句说明基本的sql语句有哪些
DROP TABLE:删除表
IF EXISTS:存在则删除
'表名':要删除的表的名称
1// 1.获取要执⾏的SQL语句
2        let createTableSQL = "DROP TABLE IF EXISTS t_student;"
3
4// 2.执⾏语句
5if sqlite3_exec(db, createTableSQL.cStringUsingEncoding(NSUTF8StringEncoding)!, nil, nil, nil) == SQLITE_OK {
6            print("删除表成功")
7        } else {
8            print("删除表失败")
9        }
10    }
6.封装SQL语句
6.1 创建/打开数据库的代码全部⼀样,可以封装起来
6.2 创建语句,执⾏语句步骤都⼀样,只有语句的内容不⼀样,可以把语句当做参数,封装起来
6.3 封装⼯具类,最好把实例对象设计为单例
class SQLiteManager {
// 设计单例对象
static let shareInstance : SQLiteManager = SQLiteManager()
// 数据库对象
var db : COpaquePointer = nil
}
// MARK:- 打开数据库的操作
extension SQLiteManager {
func openDB(filePath : String) -> Bool {
// 1.将Swift字符串转成C语⾔的字符串
let cString = filePath.cStringUsingEncoding(NSUTF8StringEncoding)!
// 3.打开/创建数据库对象
return sqlite3_open(cString, &db) == SQLITE_OK
}
}
// MARK:- 执⾏SQL语句
extension SQLiteManager {
func execSQL(sqlString : String) -> Bool {
// 1.将Swift字符串转成C语⾔的字符串
let cSQLString = sqlString.cStringUsingEncoding(NSUTF8StringEncoding)!
// 2.执⾏语句
return sqlite3_exec(db, cSQLString, nil, nil, nil) == SQLITE_OK
}
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。