使用原生SQLite3库,首先给工程添加对应的库
至于libsqlite3与libsqlite3.0的选择,可以任意选一个,有相关文章说这两个其实就是一个东西,libsqlite3.dylib本身是个链接,在这里它指向libsqlite3.0.dylib。
因为libsqlite3.0是C实现的,所以需要一个桥接文件,使得我们能在swift中调用C的接口。创建一个头文件(命名自己决定,这里我使用SQLite3_Bridge.h),文件内容
#import <sqlite3.h>
然后设置工程的交接文件
好了,工程配置完成了。接下来来看看数据库的基本操作:
打开数据库:
//数据库变量
var db : OpaquePointer? = nil
func openDb() -> Bool {
let dicumentPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).last
let dbPath = dicumentPath?.appending("/test.sqlite")
let cDbPath = dbPath?.cString(using: .utf8)
// print("dicumentPath:\(dicumentPath) \ndbPath:\(dbPath) \ncDbPath:\(cDbPath)")
if sqlite3_open(cDbPath, &db) != SQLITE_OK {
NSLog("SQLite open failed!!");
sqlite3_close(db)
return false
}
return true
}
关闭数据库:
func closeDd() -> Bool {
if db != nil {
if sqlite3_close(db) != SQLITE_OK {
return false
}
return true
}
return false
}
数据库命令执行:
先写一个通用的执行命令函数,这里会用到一些函数
sqlite3_prepare_v2 //解析命令,主要处理命令中包含的“?”占位符替换
sqlite3_step //执行命令
sqlite3_finalize //清除当前执行的命令
func exec(sql:String