Swift 中使用 SQLite——新增数据
2016-06-04 18:29
453 查看
ID。
建立 Person.swift
数据模型
/// 个人模型 class Person: NSObject { // MARK: - 模型属性 /// 代号 var id: Int64 = 0 /// 姓名 var name: String? /// 年龄 var age = 0 /// 身高 var height: Double = 0 // MARK: - 构造函数 init(dict: [String: AnyObject]) { super.init() setValuesForKeysWithDictionary(dict) } override var description: String { let keys = ["id", "name", "age", "height"] return dictionaryWithValuesForKeys(keys).description } // MARK: - 数据库操作方法 }
新增记录
在 Person模型中添加以下代码
/// 将当前对象添加到数据库 /// /// - returns: 是否成功 func insertPerson() -> Bool { guard let name = name else { print("姓名不能为空") return false } let sql = "INSERT INTO T_Person (name, age, height) VALUES ('\(name)', \(age), \(height));" return SQLiteManager.sharedManager.execSQL(sql) }
在
ViewController中增加测试代码
/// 测试插入数据 func demoInsert() { let p = Person(dict: ["name": "zhangsan", "age": 19, "height": 1.7]) if p.insertPerson() { print("插入成功 \(p)") } else { print("插入失败") } }
小结
如果主键是自动增长的,在插入数据时,不需要指定字符串类型的属性,需要使用单引号
问题:如何获取自动增长的主键数值?
在
SQLiteManager中增加函数
execInsert
/// 执行插入 SQL /// /// - parameter sql: sql /// /// - returns: 返回自动增长 id func execInsert(sql: String) -> Int64 { if !execSQL(sql) { return -1 } // 返回自动增长 id return Int64(sqlite3_last_insert_rowid(db)) }
修改 insertPerson() 函数
/// 将当前对象插入到数据库 /// /// - returns: 是否成功 func insertPerson() -> Bool { // 0. 断言姓名不为 nil assert(name != nil, "姓名不能为 nil") // 1. 准备 SQL let sql = "INSERT INTO T_Person (name, age, height) VALUES ('\(name!)', \(age), \(height));" // 2. 获得自动增长 id id = SQLiteManager.sharedManager.execInsert(sql) return id > 0 }
使用
sqlite3_last_insert_rowid可以获得自动增长的主键值
相关文章推荐
- Swift 中使用 SQLite——修改和删除数据
- Swift 中使用 SQLite——查询数据
- Swift 中使用 SQLite——批量更新(事务处理)
- Swift 中使用 SQLite——打开数据库
- 记OC迁移至swift中笔记20tips
- Swift专题讲解二十三——高级运算符
- 【swift学习笔记】四.swift使用Alamofire和swiftyJson
- 【swift学习笔记】四.swift使用Alamofire和swiftyJson
- Swift基础(五):类和结构体
- 听说Swift很NB,那么来勉强学点(3.3)--集合类型字典Dictionary
- swift学习之路(十)字典
- swift学习之路(九)数组
- iOS开发之swift与OC混编出现的坑,oc中不能对swift的代理进行调用,不能访问swift中的代理,swift中的回调方法
- NSUserDefaults.standardUserDefaults().boolForKey
- OC与swift相互调用
- iOS 的用户认证:使用Swift和Ruby on Rail
- 今天开始学习swift
- Swift开篇012->构造过程
- Swift开篇011->继承
- 从oc到swift