swift SQLite自封装
    		       		warning:
    		            这篇文章距离上次修改已过422天,其中的内容可能已经有所变动。
    		        
        		                
                在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数据库。
评论已关闭