FMDB是使用OC语言对原生的SQLite的包装库,可使用原生SQLite语句对其进行操作,且支持多线程从而保证线程安全性。
一:安装使用步骤
SPM: https://github.com/ccgus/fmdb
使用时导入包即可。例如 import FMDB
二:创建DBHelper类
创建单例工具类供访问。
import Foundation
import FMDB
class SQLiteManager: NSObject {
// Create Single instance.
private static let manger: SQLiteManager = SQLiteManager()
class func getInstance() -> SQLiteManager {
return manger
}
// Database's name.
private let dbName = "table_basic.db"
// URL
lazy var dbURL: URL = {
let fileURL = try! FileManager.default
.url(for: .applicationSupportDirectory, in: .userDomainMask,
appropriateFor: nil, create: true)
.appendingPathComponent(dbName)
print("------>Database URL:", fileURL)
return fileURL
}()
// FMDatabase Object.
lazy var db: FMDatabase = {
let database = FMDatabase(url: dbURL)
return database
}()
// FMDatabaseQueue Object.
lazy var dbQueue: FMDatabaseQueue? = {
let databaseQueue = FMDatabaseQueue(url: dbURL)
return databaseQueue
}()
}
helper类里面存有数据表名称(sqlite对于用户而言无数据库,仅有数据表),每次使用时获取实例对象进行增删改查即可。
三:增删改查类型操作
1.初始化
@IBAction func initListener(_ sender: Any) {
let db = SQLiteManager.getInstance().db
if db.open() {
print("DATABASE INIT SUCCEED.")
} else {
print("ERROR AT: \(db.lastError())")
}
}
2.创建表
增删改查均可类使用Java中的预处理方式进行运行。例如,SQL语句已经拼写完成,只需将SQL语句中待定参数替换为?即可,在withArgumentsIn: []
将变量对应传入即可。需要说明的是,在FMDB中,只有查询为executeQuery()
,其余均为executeUpdate()
。
@IBAction func createListener(_ sender: Any) {
let sql = "create table if not exists table_basic (id integer primary key autoincrement, name text);"
let db = SQLiteManager.getInstance().db
if db.open(){
try! db.executeUpdate(sql, withArgumentsIn: [])
} else{
print("ERROR AT \(db.lastError())")
}
db.close()
}
3.增
@IBAction func addListener(_ sender: Any) {
let sql = "insert into table_basic (id, name) values(?,?);"
let db = SQLiteManager.getInstance().db
if db.open(){
try! db.executeUpdate(sql, withArgumentsIn: [2007001, "jack"])
} else{
print("ERROR AT \(db.lastError())")
}
db.close()
}
4.删
@IBAction func delListener(_ sender: Any) {