数据库-FMDB查询应用(swift)

通常查询到的结果需要在控件上进行展示
每一条数据一般都是一个字典数据
多条数据就需要一个数组
所以将查询到的结果(一个集合)遍历转为字典数据,再转为数组进行返回

SQLManager.swift为一个封装的数据库管理工具类

  • SQLManager.swift:
import UIKit

// 数据库名称
private let dbName = "dataSources.db"
class SQLManager {

    // 全局访问点
    static let sharedTools: SQLManager = SQLManager()
    
    // 队列方式
    let queue: FMDatabaseQueue
    
    // 构造函数
    private init(){
        
        // 打开数据库
        
        // 获取路径
        let path = (NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.UserDomainMask, true).last! as NSString).stringByAppendingPathComponent(dbName)

        // 队列方式
        queue = FMDatabaseQueue(path: path)
        
        // 创建表
        createTable()

    }
    
    // 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("创建表失败")
            }
        }
    }
    
    
    // MARK: - 查询数据库,并将数据以数组的形式返回:
    func execRecord(sql: String) -> [[String: AnyObject]] {
        
        // 创建可变数组
        var array: [[String: AnyObject]] = [[String: AnyObject]]()
        
        // 执行sql
        SQLManager.sharedTools.queue.inDatabase { (db) in
            
            let resultSet = db.executeQuery(sql, withArgumentsInArray: nil)
            
            // 创建一个可变字典
            var dict: [String: AnyObject] = [String: AnyObject]()
            
            // 遍历结果
            while resultSet.next() {
                
                // for in 循环
                for i in 0..
  • 外界使用:
// 准备sql
let sql = "SELECT * FROM T_Person"
let arr:[[String: AnyObject]] = SQLManager.sharedTools.execRecord(sql)
print(arr)

数据库-FMDB查询应用(swift)_第1张图片
select.png

你可能感兴趣的:(数据库-FMDB查询应用(swift))