SQLiteManager 0.2.7

SQLiteManager 0.2.7

测试已测试
语言语言 SwiftSwift
许可证 MIT
发布最后发布2017年3月
SwiftSwift版本3.0
SPM支持SPM

Chamira Fernando维护。



SQLiteManager

“一切都应该尽可能地简单,但不是更简单” - 阿尔伯特·爱因斯坦

想法是提供一个简单的Swift接口来运行基本的SQL语句/查询,例如CREATE TABLE、SELECT、INSERT、UPDATE和DELETE。有大量的iOS库可以很好地处理复杂的SQLite操作,但其中绝大多数库都提供了我们所需要的工具以上的功能。因此,我们的想法是去掉所有模板代码,使事物尽可能简单。您自己编写SQL。

建模、处理对象、编写业务逻辑完全取决于开发者。

0.2.0

读取和写入查询在不同的数据库连接中执行,以提高速度
添加了在同一个事务块中执行查询数组的功能,(目前不支持使用参数的查询),这是在除正常读取/写入连接之外的另一个数据库连接中发生的
注意:这些新功能在swift2.3版本中不可用

示例

要运行示例项目,首先克隆仓库,然后从示例目录中运行pod install

要求

最小iOS SDK 8.0
最小tvOS SDK 9.0

安装

SQLiteManager可以通过CocoaPods获取。要安装它,只需将以下行添加到您的Podfile中

使用方式

将SQLite数据库文件拖到项目包中。示例数据库文件名:app_test_database_1,扩展名:db

pod "SQLiteManager"
import SQLiteManager

class ViewController: UIViewController {

    @IBOutlet weak var countLabel: UILabel!

    override func viewDidLoad() {

        super.viewDidLoad()

        let database =  try! SQLitePool.manager().initialize(database: "app_test_database_1", withExtension: "db")

        // on main thread
        let result = try! database.query("select count(*) as user_count from tb_user")
        if let r = result.results?.first!["user_count"] {
            self.countLabel.text = "\(r)"
        }

        // on background thread
        unowned let refSelf = self
        database.query("select count(*) as user_count from tb_user", successClosure: { (result) in

        if let r = result.results?.first!["user_count"] {
            refSelf.countLabel.text = "\(r)"
        }

        }, errorClosure: { (error) in
            print("Database Error",error)
        })

        //bind values
        let dob = Date(timeIntervalSince1970: 3600*24*3650)

        let imagePath = URL(fileURLWithPath: Bundle.main.path(forResource: "chamira_fernando", ofType: "jpg")!)
        let profilePic  = try! Data(contentsOf: imagePath)

        let _ = try! database.bindQuery("INSERT INTO 'tb_user' (first_name, last_name, username, date_of_birth, company_id, profile_picture) VALUES (?,?,?,?,?,?)", bindValues: [sqlStr("Chameera"),sqlStr("Fernando"),sqlStr("some_user_name"), sqlNumber(dob.timeIntervalSince1970),sqlNumber(1),sqlData(profilePic)])


        //batch
        let q1 = "SELECT * FROM tb_user"
        let q2 = "SELECT username FROM tb_user"

        database.query([q1,q2], successClosure: { (batchResult) in

            print("Time taken to proces",batchResult.timeTaken)
            for r in batchResult.results {
            print("Batch r:",r.results ?? "")
        }

        }, errorClosure: { (e) in
            print(e)
        })
    }
}

旧版本

如果您想使用swift 2.3版本,请指向swift2.3分支pod 'SQLiteManager', :git => 'https://github.com/chamira/SQLiteManager.git', :branch => 'swift2.3'

作者

Chamira Fernando,[email protected]Twitter

许可协议

SQLiteManager 在 MIT 许可协议下可用。更多信息请查看 LICENSE 文件。