swift SQLite自封装
在Swift中,你可以通过封装SQLite的C API来简化数据库操作。以下是一个简单的SQLite封装示例,它提供了打开数据库、执行查询和关闭数据库的基本功能。
import SQLite3
class SQLiteManager {
var db: OpaquePointer?
init?(dbPath: String) {
if sqlite3_open(dbPath.cString(using: .utf8), &db) != SQLITE_OK {
print("数据库打开失败")
return nil
}
}
func executeQuery(sql: String, args: [String]? = nil) -> Bool {
var statement: OpaquePointer?
if sqlite3_prepare_v2(db, sql.cString(using: .utf8), -1, &statement, nil) == SQLITE_OK {
if let args = args {
for (i, arg) in args.enumerated() {
if sqlite3_bind_text(statement, Int32(i + 1), arg.cString(using: .utf8), -1, nil) != SQLITE_OK {
print("绑定参数失败")
return false
}
}
}
while sqlite3_step(statement) == SQLITE_ROW { }
sqlite3_finalize(statement)
return true
}
return false
}
deinit {
sqlite3_close(db)
}
}
// 使用示例
let manager = SQLiteManager(dbPath: "path/to/database.sqlite3")
if let manager = manager {
let success = manager.executeQuery(sql: "INSERT INTO tableName (column1, column2) VALUES (?, ?)", args: ["value1", "value2"])
if success {
print("查询成功")
} else {
print("查询失败")
}
}
这个封装类SQLiteManager
在初始化时尝试打开指定路径的数据库,并提供了一个执行查询的方法。该方法可以执行带参数的SQL语句,并在出错时返回false
。在deinit
中,数据库被关闭,以确保资源得到释放。这个简单的封装可以让你更方便地在Swift项目中使用SQLite数据库。
评论已关闭