- 从github下载FMDB后,需要将
FMDatabaseAdditionsVariadic.swift
FMDatabaseVariadic.swift
两个文件拷贝到fmdb-master/src/fmdb中
然后将fmdb文件夹导入工程
FMDB是OC写的,还需要创建桥接文件,导入FMDB.h文件
接下来创建一个SQLManager.swift类,专门用来执行数据库操作,也是为了防止与项目隔离开(这里创建时默认继承了NSObject,创建好后,删除基类,什么也不继承)
// 数据库名称
private let dbName = "dataSources.db"
class SQLManager {
// 全局访问点
static let sharedTools: SQLManager = SQLManager()
// 队列方式
let queue: FMDatabaseQueue
// 构造函数(不让外界访问,只通过全局访问点)
private init(){
// MARK: - 打开数据库
// 获取路径
let path = (NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.UserDomainMask, true).last! as NSString).stringByAppendingPathComponent(dbName)
// 队列方式
queue = FMDatabaseQueue(path: path)
// 创建表
createTable()
// 打印路径
print(path)
}
// MARK: - 创建表
private func createTable() -> Void {
// 获取文件
let file = NSBundle.mainBundle().pathForResource("db.sql", ofType: nil)!
// 准备sql
let sql = try! String(contentsOfFile: file)
// 执行sql
queue.inDatabase { (db) in
let result = db.executeStatements(sql)
if result {
print("创建表成功")
} else {
print("创建表失败")
}
}
}
}
这里将SQL语句放在了一个单独的db.sql文件中,通过bundle加载文件再执行SQL语句
-- 创建个人表 --
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_Book" (
"id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
"bookName" TEXT
);