AWSQLiteDB:在 Swift 中更簡單地操作 SQLite

jopen 8年前發布 | 14K 次閱讀 iOS開發 移動開發 AWSQLiteDB

AWSQLiteDB是libsqlite3在Swift中的一個簡單封裝。

安裝

Carthage

Carthage是一個去中心化的包管理工具。

安裝 Carthage

$ brew update
$ brew install carthage

集成 AWSQLiteDB 到 iOS 項目

  1. 在項目中創建Cartfile文件,并添加下面內容

    git "https://github.com/adow/AWSQLiteDB.git" >= 0.1.2
  2. 運行Carthage update, 獲取 AWSQLiteDB;

  3. 拖動Carthage/Build/iOS下面的AWSQLiteDB.framwork到項目Targets,General設置標簽的Linked Frameworks and Linraries中;
  4. 在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 添加到項目中。

  1. 首先確保項目已經在 git 倉庫中;
  2. 添加AWSQLiteDB作為 Submodule:

    git submodule add https://github.com/adow/AWSQLiteDB.git
  3. 在 Xcode 中打開項目,將 AWSQLiteDB.xcodeproj 拖放到你的項目的根目錄下;

  4. 在你的項目下,選擇Targets,General中添加Embedded Binaries, 選擇AWSQLiteDB.framework, 確保Build Phases中的Link Binary with Libraries中有AWSQLiteDB.framework;

或者直接使用 AWSQLiteDB.swift

  1. 復制 AWSQLiteDB.swift 到項目中
  2. 在項目的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)")
}

參考

項目主頁:http://www.baiduhome.net/lib/view/home/1451036571839

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!