FMDB Swift版使用

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) {
   
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值