SDDatabase 1.0.0

SDDatabase 1.0.0

Sagar 维护。



  • 作者
  • Sagar Dagdu

SDDatabase

Version License Platform

SDDatabase 是对著名 FMDB 的简单而强大的包装。它提供了对sqlite数据库操作的高效和简单访问,消除了所有样板代码。用 Swift 编写❤️

SDDatabase 的功能

  • 使用简单,提供直接的方法用于 创建插入更新删除选择 等……无需为上述操作使用原始查询
  • 无需担心多线程,因为每个 SDDatabase 实例都有自己的 FMDatabaseQueue,并且所有包装方法都调用在此队列上。在整个应用程序中创建一个实例单例并使用它。
  • 支持事务。
  • 能够处理加密数据库文件,使用 SQLCipher
  • 无需处理复杂的 resultSet 对象,SDDatabase 以字典数组的形式返回结果,可以遍历。即 [[String : Any]]
  • 所有方法都有完整的文档,包括它们的示例用法。😎

为您的下一个使用 SQLite 的项目选择 SDDatabase,或者迁移您的现有项目——您会为此而高兴的!

依赖

SDDatabase 依赖于 FMDB 的 FMDB/SQLCipher 子规范。FMDB/SQLCipher 子规范声明 SQLCipher 为依赖项,允许 FMDB 使用 -DSQLITE_HAS_CODEC 标志进行编译。

安装

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

pod 'SDDatabase'

使用

初始化数据库

let documentDirectoryPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).first!
let databasePath = documentDirectoryPath.appending("/testdb.sqlite")
guard let db = Database(withPath: databasePath) else {
print("DB could not be opened")
return
}

如果数据库文件已加密,可以使用带有密钥的init方法

Database(withPath: self.dbPath(), key: "testKey")

您可以使用属性loggingEnabled控制库是否将任何错误或其他日志记录到控制台

/* Set this to false if you do not want database to log to the console */
db.loggingEnabled = true

创建表(create

let studentSchema = " ("
+ "roll_number" + " INT PRIMARY KEY, "
+ "name" + " text"
+ ") "
let creationSuccess = db.create(table: "student", withSchema: studentSchema)

向表中插入记录(insert

var studentValues = [String:Any]()
studentValues["roll_number"] = 1
studentValues["name"] = "Sagar"
let insertionSuccess = db.insert(intoTable: "student", values: studentValues)

从表中选择记录(select

guard let records = db.select(fromTable: "student", columns: ["roll_number", "name"], whereClause: "name = ?", whereValues: ["Sagar"]) else {
return
}

for record in records {
let rollNumber = record["roll_number"] as! Int
let name = record["name"] as! String
print("Roll number : \(rollNumber), name is \(name)")
}

您还可以将偏移量(offset)和限制(limit)传递给select方法,有关更详细的用法请参阅文档

更新记录(update

let updateSuccess = db.update(table: "student", set: ["name" : "Other"], whereClause: "name = ?", whereValues: ["Sagar"])

删除记录(delete

let deletionSuccess = db.delete(fromtable: "student", where: "roll_number = ?", whereValues: [1])

删除表(drop

let dropSuccess = db.drop(table: "student")

原生查询

该类提供了executeQuery()executeUpdate()方法以执行原生SQL语句。请参阅文档以获取详细用法。

事务管理

该类提供了beginTransaction()commitTransactionrollback()isInTransaction()方法以处理事务管理。请参阅文档以获取详细用法。

示例

要运行示例项目,首先从示例目录克隆repo,然后运行pod install。示例项目包括了该库提供所有方法的用法。

作者

Sagar Dagdu, [email protected]

许可

SDDatabase 在 MIT 许可证下可用。请参阅 LICENSE 文件以获取更多信息。

贡献

欢迎所有贡献。请复制项目添加功能,然后在下一版本中提交拉取请求以合并。