Swift 中使用 SQLite——创建数据表
2016-03-16 00:43
411 查看
这是Swift 中使用 SQLite系列文章的第二篇,本文主要介绍一下如何创建数据表,首先提示一下:
如果是第一次运行,打开数据库之后,只能得到一个空的数据,没有任何的数据表
为了让数据库正常使用,在第一次打开数据库后,需要执行
注意:创表操作本质上是通过执行
调整
将
在每一行后面增加一个
在
将 Navicat 中的 DDL 创表文件粘贴到 db.sql 中
每个表名前添加
每段 SQL 末尾添加
使用
修改
如果要保护数据安全,可以对 sql 脚本进行一些简单的加密处理
将 db64.txt 拖拽到项目中
新建以下函数,先解码再执行
如果是第一次运行,打开数据库之后,只能得到一个空的数据,没有任何的数据表
为了让数据库正常使用,在第一次打开数据库后,需要执行
创表操作
注意:创表操作本质上是通过执行
SQL语句实现的
代码实现
执行SQL语句函数
[code]/// 执行 SQL /// /// - parameter sql: SQL /// /// - returns: 是否成功 func execSQL(sql: String) -> Bool { /** 参数 1. 数据库句柄 2. 要执行的 SQL 语句 3. 执行完成后的回调,通常为 nil 4. 回调函数第一个参数的地址,通常为 nil 5. 错误信息地址,通常为 nil */ return sqlite3_exec(db, sql, nil, nil, nil) == SQLITE_OK }
通过 SQL 语句创建数据表
通过 SQL 语句直接创建数据表[code]/// 创建数据表 /// /// - returns: 是否成功 private func createTable() -> Bool { // 1. 准备 SQL let sql = "CREATE TABLE IF NOT EXISTS 'T_Person' ( \n" + "'id' INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, \n" + "'name' TEXT, \n" + "'age' INTEGER, \n" + "'height' REAL \n" + ");" // 2. 返回执行 SQL 的结果 return execSQL(sql) }
调整
openDB函数
[code]if createTable() { print("创建数据表成功") } else { print("创建数据表失败") }
小结
创表SQL可以从
Navicat中粘贴,然后做一些处理
将
"替换成
'
在每一行后面增加一个
\n防止字符串拼接因为缺少空格造成
SQL语句错误
在
表名前添加
IF NOT EXISTS防止因为数据表存在出现错误
通过 SQL 文件直接创表
在 Xcode 中建立db.sql文件
将 Navicat 中的 DDL 创表文件粘贴到 db.sql 中
每个表名前添加
IF NOT EXISTS防止因为数据表存在出现错误
每段 SQL 末尾添加
;
使用
-- 描述信息增加数据表备注
[code]-- 创建个人信息表 CREATE TABLE IF NOT EXISTS "T_Person" ( "id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, "name" TEXT, "age" INTEGER, "height" REAL ); -- 创建图书表 CREATE TABLE IF NOT EXISTS "T_Books" ( "id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, "name" TEXT );
修改
createTable函数
[code]/// 创建数据表 - 从 bundle 加载并执行 db.sql /// /// - returns: 是否成功 private func createTable() -> Bool { // 1. 准备 SQL let path = NSBundle.mainBundle().pathForResource("db.sql", ofType: nil)! guard let sql = try? NSString(contentsOfFile: path, encoding: NSUTF8StringEncoding) else { print("加载 SQL 失败") return false } // 2. 执行 SQL return execSQL(sql as String) }
小结
通过 sql 脚本创建数据表的方式灵活性更大,被广泛应用在商业应用中如果要保护数据安全,可以对 sql 脚本进行一些简单的加密处理
base 64 简单加密
在终端输入以下命令[code]$ base64 db.sql -o db64.txt
将 db64.txt 拖拽到项目中
新建以下函数,先解码再执行
[code]/// 加载 base64 编码后的 SQL /// /// 提示: /// - BASE64 编码 /// $ base64 db.sql -o db64.txt /// - BASE64 解码 /// $ base64 db64.txt -D -o db.sql /// - returns: 是否成功 private func createTable3() -> Bool { // 1. 准备 SQL let path = NSBundle.mainBundle().pathForResource("db64.txt", ofType: nil)! let base64 = try! String(contentsOfFile: path) let data = NSData(base64EncodedString: base64, options: [.IgnoreUnknownCharacters])! // base64 解码 let sql = NSString(data: data, encoding: NSUTF8StringEncoding)! as String // 2. 执行 SQL return execSQL(sql) }
相关文章推荐
- Swift开发第四篇——柯里化
- Swift 中使用 SQLite——打开数据库
- 对照Java学习Swift--集合类型
- 在Swift中如何使用C中的Struct
- Swift开发第三篇——Playground
- Swift-2.8枚举
- Swift基础--手势识别(双击、捏、旋转、拖动、划动、长按)
- Swift异常处理:throw和rethrow
- Swift - 操作SQLite数据库(引用SQLite3库)
- Swift 函数的基本写法与使用元组实现返回多个值(四)
- 对照Java学习Swift--字符串和字符
- Swift语法--continue和break的标签用法
- THE SWIFT CODE之设置UIBUTTON的不同方式创建,以及不同的状态和外观
- Swift 2.0 UItableView 的简单使用
- Swift 条件选择(if Switch),循环结构(三)
- ios/swift 移除 childViewControllers
- iOS开发系列之Swift_UI_ImgVIew And UIView
- Swift ---- UITableView的基本使用与一个大坑点
- Kotlin:Android世界的Swift
- Swift开发第二遍——extension及fatalError