SQLite.swift的简单使用

使用cocoapod 来进行引入

pod ‘SQLite.swift’

//
// SQLiteTool.swift
// CreateLectureForSwift
//
// Created by coder on 2019/6/25.
// Copyright © 2019 AlexanderYeah. All rights reserved.
//

import Foundation
import SQLite

// id
let id = Expression(“id”)
// 名字
let name = Expression<String?>(“name”)
// 价格
let price = Expression(“price”)
// 价格
let imgUrl = Expression(“imgUrl”)

// 价格
let p_id = Expression(“p_id”)

// 数量
let quantity = Expression(“quantity”)

class SQLiteTool: NSObject {

// 单例方法
static let tool:SQLiteTool = {
    let tool  = SQLiteTool();
    return tool;
}();

// 数据库
private var db : Connection?;
// 表
private var tb :Table?;

}

extension SQLiteTool{

// 打开数据库返回一个连接
func openDB() -> Connection {

    if  db == nil {
        let path = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).first!;
        print(path as Any);
        db = try! Connection("\(path)/shopCart.sqlite3");            
        db?.busyTimeout = 5;
    }
    
    return db!;
}


// MAKR:- 创建表
func createTb() ->Table {
    if self.tb == nil {
        // 创建表
        self.tb = Table("cart1");
        // 插入内容
        try! openDB().run(
            
            // temporary 是否为临时表
            // ifNotExists 是否在不存在的时候进行创建
            // withoutRowid 是否自动创建自增的id
            self.tb!.create(temporary: false, ifNotExists: true, withoutRowid: false, block: { (t) in
                
                t.column(id,primaryKey: true);
                t.column(name);
                t.column(price);
                t.column(imgUrl);
                t.column(quantity);
                t.column(p_id);
            })
        
        )
        
    }
    return self.tb!;
    
}



// MAKR:- 插入操作

func insert(model:ProductModel)  {
    
    // 插入的新的一条的时候 判断当前的条是否存在表中 如果存在的话 直接修改其数量即可
    
    let query =  self.tb!.filter(p_id == model.Id!);
    
    let result = try! self.db!.prepare(query);
    let array = Array(result);
    if array.count == 0 {
        
        print("插入前查询结果为0,执行插入操作");
        let insert = self.tb?.insert(p_id <- model.Id!,name <- model.Name,price <- model.SalePrice!,quantity <- 1,imgUrl <- model.CoverImage!)

        // 执行插入操作 插入成功会返回对应的ROWID
        let rowID = try? self.db?.run(insert!);
        
        if (rowID != nil) {
            print("插入成功")
        }else{
            print("插入失败")
        }
        
    }else{
        
        print("不为0 做更新操作");
        let row = array.first;
        let targetQuantity = try? row!.get(quantity);
        if try! (self.db?.run(query.update(quantity <- (targetQuantity! + 1))))! > 0{
            print("修改数据成功 count == 1");
        }else{
            print("修改数据失败");
        }
    }
    
}

// MARK:- 删除操作
func delete(rowId:Int64){
    // 删除单行的数据
    let del = self.tb?.filter(id == rowId);
    do {
        if try self.db!.run(del!.delete()) > 0 {
            print("删除成功")
        }else{
            print("删除失败")
        }
    } catch  {
        print("删除失败")
    }
}
// MARK:- 查询全部数据
func findAll() ->[Row]{
        
    // 查询全部的数据
    let result = try! db?.prepare(self.tb!);
    return Array(result!);
    
}

// MAKR: - 获取购物车商品的数量
func getCartTotalCount() -> Int64{
    let result = try! db?.prepare(self.tb!);
    let array = Array(result!);
    var totalCount:Int64 = 0;
    for row in array {
        totalCount = (try! row.get(quantity)) + totalCount;
    }
    return totalCount;
}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值