數(shù)據(jù)庫-FMDB查詢數(shù)據(jù)(swift)

  • 簡單查詢使用 : 查詢所有數(shù)據(jù),顯示全部信息
import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        
       //查詢方式01-查詢所有數(shù)據(jù),顯示全部信息
        select_01()
       //查詢方式02-查詢所有數(shù)據(jù),顯示逐條信息
        select_02()
        
    }
    
  func select_01() -> Void {
        
        // 準備sql
        let sql = "SELECT * FROM T_Person"
        // 執(zhí)行sql
        SQLManager.sharedTools.queue.inDatabase { (db) in
            
            let resultSet = db.executeQuery(sql, withArgumentsInArray: nil)
            
            // 遍歷 resultSet: FMResultSet!
            while resultSet.next() {
                
                // 獲取名字
                let name = resultSet.stringForColumn("name")
                // 獲取年齡
                let age = resultSet.intForColumn("age")
                // 獲取身高
                let height = resultSet.doubleForColumn("height")
                
                print("名字:\(name),年齡:\(age),身高:\(height)")
                print("==============分割線================")
            }
            
        }
    }

    // 查詢-02:查詢所有數(shù)據(jù),顯示逐條信息
    func select_02() -> Void {
 
        // 執(zhí)行sql
        SQLManager.sharedTools.queue.inDatabase { (db) in

        let resultSet = db.executeQuery(sql, withArgumentsInArray: nil)

           // for in 循環(huán)遍歷結(jié)果
            for i in 0..<resultSet.columnCount() {
                // 根據(jù)列的索引取出鍵:類似于key
                let key = resultSet.columnNameForIndex(i)
                // 根據(jù)列的索引取出值:類似于value
                let value = resultSet.objectForColumnIndex(i)
                    
                print("key:\(key) value:\(value)")
                print("==============分割線================")
      
            }
            
        }
 
    }
}
select_01.png

select_02.png

SQLManager.swift:

// 數(shù)據(jù)庫名稱
private let dbName = "dataSources.db"
class SQLManager {

    // 全局訪問點
    static let sharedTools: SQLManager = SQLManager()
    
    // 隊列方式
    let queue: FMDatabaseQueue
    
    // 構(gòu)造函數(shù)
    private init(){
        
        // 打開數(shù)據(jù)庫
        
        // 獲取路徑
        let path = (NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.UserDomainMask, true).last! as NSString).stringByAppendingPathComponent(dbName)

        // 隊列方式
        queue = FMDatabaseQueue(path: path)
        
        // 創(chuàng)建表
        createTable()
        
        // 打印路徑
        print(path)
    }
    
    // MARK: - 創(chuàng)建表
    private func createTable() -> Void {
        
        // 獲取文件
        let file = NSBundle.mainBundle().pathForResource("db.sql", ofType: nil)!
        
        // 準備sql
        let sql = try! String(contentsOfFile: file)
        
        // 執(zhí)行sql
        queue.inDatabase { (db) in
            
            let result = db.executeStatements(sql)
            
            if result {
                print("創(chuàng)建表成功")
            } else {
                print("創(chuàng)建表失敗")
            }
        }
    }
}

創(chuàng)建表的SQL語句放在單獨的文件db.sql中:

-- 創(chuàng)建個人表 --
CREATE TABLE IF NOT EXISTS "T_Person" (
    "id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
    "name" TEXT,
    "age" INTEGER,
    "height" REAL
);

-- 創(chuàng)建圖書表 --
CREATE TABLE IF NOT EXISTS "T_Book" (
    "id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
    "bookName" TEXT
);
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容