Swift 中使用 SQLite——新增数据
来源:互联网 发布:全球人口增长数据 编辑:程序博客网 时间:2024/05/11 06:07
本文重点介绍两个方面,1、新增数据,2、获取自动增长 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: 返回自动增长 idfunc 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
可以获得自动增长的主键值
0 0
- Swift 中使用 SQLite——新增数据
- Swift 中使用 SQLite——新增数据
- Swift 中使用 SQLite——修改和删除数据
- Swift 中使用 SQLite——查询数据
- Swift 中使用 SQLite——查询数据
- Swift 中使用 SQLite——修改和删除数据
- Swift 中使用 SQLite——打开数据库
- Swift 中使用 SQLite——创建数据表
- Swift 中使用 SQLite——批量更新(事务处理)
- Swift 中使用 SQLite——打开数据库
- Swift 中使用 SQLite——批量更新(事务处理)
- SQLite的使用—— Swift代码
- sqlite系列(2)使用FMDB保存数据swift
- Android数据存储—使用SQLite数据库
- Android数据存储—使用SQLite数据库
- Sqlite查询新增数据的id
- Android中数据存储——SQLite数据库存储数据
- Android中使用SQlite进行数据操作
- OnTouch和OnTouchEvent的区别
- STM32的8种GPIO模式理解
- 马上要走了,去北京.....
- 分解质因数
- UVA 11538Chess Queen
- Swift 中使用 SQLite——新增数据
- 打印由0-n组成的三角形
- TCP 的那些事儿(下)
- 二进制32位ip地址转换为十进制表示
- UVA 11401Triangle Counting
- DOS命令行中常见的命令
- Bugtags工具试用过程笔记
- LeetCode动态规划198. House Robber思路解析
- 进程与线程区别,为什么进入进程机制?