AWSQLiteDB:在 Swift 中更简单地操作 SQLite
jopen
9年前
AWSQLiteDB是libsqlite3在Swift中的一个简单封装。
安装
Carthage
Carthage是一个去中心化的包管理工具。
安装 Carthage
$ brew update $ brew install carthage
集成 AWSQLiteDB 到 iOS 项目
-
在项目中创建Cartfile文件,并添加下面内容
git "https://github.com/adow/AWSQLiteDB.git" >= 0.1.2
-
运行Carthage update, 获取 AWSQLiteDB;
- 拖动Carthage/Build/iOS下面的AWSQLiteDB.framwork到项目Targets,General设置标签的Linked Frameworks and Linraries中;
-
在Targes的Build Phases设置中,点击+按钮,添加New Run Script Phase来添加脚本:
/usr/local/bin/carthage copy-frameworks
同时在下面的Input Files中添加:
$(SRCROOT)/Carthage/Build/iOS/AWSQLiteDB.framework
Cocoapods
source 'https://github.com/CocoaPods/Specs.git' platform :ios, '8.0' use_frameworks! pod 'AWSQLiteDB', '~> 0.1.2'
手动安装
通过 Git Submodule 集成
通过 Submodule 将 SecrecySwift 作为 Embedded Framework 添加到项目中。
- 首先确保项目已经在 git 仓库中;
-
添加AWSQLiteDB作为 Submodule:
git submodule add https://github.com/adow/AWSQLiteDB.git
-
在 Xcode 中打开项目,将 AWSQLiteDB.xcodeproj 拖放到你的项目的根目录下;
- 在你的项目下,选择Targets,General中添加Embedded Binaries, 选择AWSQLiteDB.framework, 确保Build Phases中的Link Binary with Libraries中有AWSQLiteDB.framework;
或者直接使用 AWSQLiteDB.swift
- 复制 AWSQLiteDB.swift 到项目中
- 在项目的Targets的Build Phases的Link Binary with Libraries中添加libsqlite3.0.tbd;
使用
打开数据库
let cache_dir = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.CachesDirectory, NSSearchPathDomainMask.UserDomainMask, true)[0] let db_filename = "\(cache_dir)/sql.db" let db = SQLiteDB(path: db_filename)
关闭数据库
SQLiteDB 实例被释放的时候会自动关闭数据库
db.close()
打开单例的数据库
let cache_dir = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.CachesDirectory, NSSearchPathDomainMask.UserDomainMask, true)[0] let db_filename = "\(cache_dir)/sql.db" guard let _ = try? SQLiteDB.setupSharedDBPath(db_filename) else { return }
执行 Execute
创建表
var sql = "create table test (id INTEGER PRIMARY KEY AUTOINCREMENT, name CHAR(32) NOT NULL)" print("create table:\(SQLiteDB.sharedDB.execute(sql))")
Insert
sql = "insert into test (id,name) values (?,?)" var result = SQLiteDB.sharedDB.execute(sql, parameters:9, "adow") print("insert:\(result)")
update
sql = "update test set name=? where id =?" result = SQLiteDB.sharedDB.execute(sql, parameters: "reynold qin",9) print("update:\(result)")
查询 Query
sql = "select * from test" let rows = SQLiteDB.sharedDB.query(sql) for r in rows { let id = r["id"]!.value!.integer! let name = r["name"]!.value!.string! print("\(id):\(name)") }