本文介绍下SQLite.swift的基本使用方法,包括与数据库建立连接、建表、增、删、查、改,以上基本用法。文中代码都是从当前项目中直接粘下来的,并不能直接运行,但是核心的东西都在了。

这个是SQLite.swift的网址,里面有简单的介绍(粘贴复制到地址栏):
https://github.com/stephencelis/SQLite.swift
这个是SQLite.swift的文档(全英文,硬着头皮也得看)
https://github.com/stephencelis/SQLite.swift/blob/master/Documentation/Index.md#sqliteswift-documentation

第三方库的导入方法这里不讲解。

新建一个iOS程序,并新建一个swift文件命名为Database并建立结构体。

这里建立一个灯光列表,具体如下:

列表项 id address name colorValue lampType
项类型 Int64 Int64 String String Int64

//
//  Database.swift
//  iOS_Client
//
//  Created by AlexTiger on 2020/13/33.
//  Copyright © 2020年 Tiger. All rights reserved.
//import Foundation
import SQLitestruct Database {var db: Connection!init() {connectDatabase()}// 与数据库建立连接mutating func connectDatabase(filePath: String = "/Documents") -> Void {let sqlFilePath = NSHomeDirectory() + filePath + "/db.sqlite3"do { // 与数据库建立连接db = try Connection(sqlFilePath)print("与数据库建立连接 成功")} catch {print("与数据库建立连接 失败:\(error)")}}// ===================================== 灯光 =====================================let TABLE_LAMP = Table("table_lamp") // 表名称let TABLE_LAMP_ID = Expression<Int64>("lamp_id") // 列表项及项类型let TABLE_LAMP_ADDRESS = Expression<Int64>("lamp_address")let TABLE_LAMP_NAME = Expression<String>("lamp_name")let TABLE_LAMP_COLOR_VALUE = Expression<String>("lamp_colorValue")let TABLE_LAMP_LAMP_TYPE = Expression<Int64>("lamp_lampType")// 建表func tableLampCreate() -> Void {do { // 创建表TABLE_LAMPtry db.run(TABLE_LAMP.create { table intable.column(TABLE_LAMP_ID, primaryKey: .autoincrement) // 主键自加且不为空table.column(TABLE_LAMP_ADDRESS)table.column(TABLE_LAMP_NAME)table.column(TABLE_LAMP_COLOR_VALUE)table.column(TABLE_LAMP_LAMP_TYPE)})print("创建表 TABLE_LAMP 成功")} catch {print("创建表 TABLE_LAMP 失败:\(error)")}}// 插入func tableLampInsertItem(address: Int64, name: String, colorValue: String, lampType: Int64) -> Void {let insert = TABLE_LAMP.insert(TABLE_LAMP_ADDRESS <- address, TABLE_LAMP_NAME <- name, TABLE_LAMP_COLOR_VALUE <- colorValue, TABLE_LAMP_LAMP_TYPE <- lampType)do {let rowid = try db.run(insert)print("插入数据成功 id: \(rowid)")} catch {print("插入数据失败: \(error)")}}// 遍历func queryTableLamp() -> Void {for item in (try! db.prepare(TABLE_LAMP)) {print("灯光 遍历 ———— id: \(item[TABLE_LAMP_ID]), address: \(item[TABLE_LAMP_ADDRESS]), name: \(item[TABLE_LAMP_NAME]), colorValue: \(item[TABLE_LAMP_COLOR_VALUE]), lampType: \(item[TABLE_LAMP_LAMP_TYPE])")}}// 读取func readTableLampItem(address: Int64) -> Void {for item in try! db.prepare(TABLE_LAMP.filter(TABLE_LAMP_ADDRESS == address)) {print("\n读取(灯光)id: \(item[TABLE_LAMP_ID]), address: \(item[TABLE_LAMP_ADDRESS]), name: \(item[TABLE_LAMP_NAME]), colorValue: \(item[TABLE_LAMP_COLOR_VALUE]), lampType: \(item[TABLE_LAMP_LAMP_TYPE])")}}// 更新func tableLampUpdateItem(address: Int64, newName: String) -> Void {let item = TABLE_LAMP.filter(TABLE_LAMP_ADDRESS == address)do {if try db.run(item.update(TABLE_LAMP_NAME <- newName)) > 0 {print("灯光\(address) 更新成功")} else {print("没有发现 灯光条目 \(address)")}} catch {print("灯光\(address) 更新失败:\(error)")}}// 删除func tableLampDeleteItem(address: Int64) -> Void {let item = TABLE_LAMP.filter(TABLE_LAMP_ADDRESS == address)do {if try db.run(item.delete()) > 0 {print("灯光\(address) 删除成功")} else {print("没有发现 灯光条目 \(address)")}} catch {print("灯光\(address) 删除失败:\(error)")}}}

下面在ViewController.swift中调用以上方法

class ViewController: UIViewController {// 数据库声明var database: Database!override func viewDidLoad() {super.viewDidLoad()// 与数据库建立连接database = Database()// 建立列表(有列表后不再建立)database.tableLampCreate()// 插入两条数据 database.tableLampInsertItem(address: 51, name: "灯光1", colorValue: "#FFFFFF", lampType: 0)database.tableLampInsertItem(address: 52, name: "灯光2", colorValue: "#AAAAAA", lampType: 1)// 遍历列表(检查插入结果)database.queryTableLamp()// 根据条件查询database.readTableLampItem(address: 52)// 修改列表项database.tableLampUpdateItem(address: 51, newName: "客厅大灯")// 遍历列表(检查修改结果)database.queryTableLamp()// 删除列表项database.tableLampDeleteItem(address: 52)// 遍历列表(检查删除结果)database.queryTableLamp()}override func didReceiveMemoryWarning() {super.didReceiveMemoryWarning()// Dispose of any resources that can be recreated.}}

下面运行下试试看看结果是否符合预期(本人是在真机上调试的,iPhone SE,模拟器也一样的效果)

再次运行程序,建表失败(表已存在)

文章到这里就结束了,本文关于SQLite.swift的用法介绍的还不够全面,如果有特殊需要的话还是得去官方文档找答案。

SQLite.swift —— 实例教程(增删查改)Swift 3相关推荐

  1. android开发课程表app数据库,基于Android studio 的课程表增删查改功能(基于sqlite)

    [实例简介]Android studio 用SQLite实现课程表的增删查改功能,:实现详情浏览.编辑.及新增功能.课程编号可以实现正则检查(编号规则XX00000,XX表示两位大写的字母,00000 ...

  2. backbonejs mvc框架的增删查改实例

    一:开发环境 coffeescript和nodejs需要先安装,没装网上自己查安装步骤. 代码编写环境及esp框架下载: esp框架下载地址:https://github.com/nonocast/e ...

  3. swift实例教程_Swift示例教程基础

    swift实例教程 In this tutorial we'll look into the basic syntax of Swift and run it in our console. 在本教程 ...

  4. 支持增删查改的简单Java Web通讯录详细教程【基于Mac OS+IDEA+Servlet+JDBC+Tomcat】

    本文将以Web版通讯录的形式介绍一个支持简单增删查改的Java Web项目,软硬件环境基于Macbook Air M2+macOS Ventura 13.1+IntelliJ IDEA 2022,技术 ...

  5. java使用org.w3c.dom解析XML文档,创建、增删查改,保存,读取,遍历元素等操作

    全栈工程师开发手册 (作者:栾鹏) java教程全解 java使用org.w3c.dom(java dom)解析XML文档,创建.增删查改,保存,读取,遍历元素等操作 在保存文件时需要载入crimso ...

  6. MERGE批量增删查改数据

    MERGE优点: 在批量处理数据的时候,我可以用到merge一次完成数据处理. 示例代码一: MERGE INTO student AS t using (SELECT '丽水' AS NAME,20 ...

  7. 5.在MVC中使用泛型仓储模式和工作单元来进行增删查改

    原文链接:http://www.c-sharpcorner.com/UploadFile/3d39b4/crud-operations-using-the-generic-repository-pat ...

  8. winform调用webservice增删查改_教你分别用数据库与云函数实现“增删查改”

    导语 数据库 API 与云函数"增删查改"的姿势有何不同?对比代码差异往往有助于更好的理解,本文用详细代码帮你寻找答案并巩固基础! ▌一.云开发初始化 wx.cloud.init( ...

  9. xml02 XML编程(CRUD)增删查改

    XML解析技术概述 Demo2.java import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuil ...

  10. java调用js查询mongo_MongoDB增删查改操作示例【基于JavaScript Shell】

    本文实例讲述了MongoDB增删查改操作.分享给大家供大家参考,具体如下: MongoDB自带了一个JavaScript Shell,所以在其中使用js语法是可以的. Insert操作: 单条插入 v ...

最新文章

  1. 人工智能项目的六投三不投
  2. AOP原理-创建AOP代理--AnnotationAwareAspectJAutoProxyCreator【InstantiationAwareBeanPostProcessor】的作用
  3. HTML+CSS实例——漂亮的查询部件(一)
  4. 椭圆中心到椭圆切线的距离
  5. 水晶报表加载失败的解决方法
  6. java.lang.NoClassDefFoundError:org/apache/commons/io/Charsets (jsoup配合htmlunit 爬取异步加载的网页遇到的)
  7. 18f458中断入口C语言_操作系统开发之——中断
  8. python写网页插件_用python 实现activex网页控件
  9. PHP语言的RSA算法加解密程序
  10. MongoDB是我想要的存储么?
  11. WPF Ribbon 开发资料分享
  12. mumu模拟器android调试,如何使用网易mumu模拟器调试安卓程序?
  13. 赋能智慧交通的5G关键技术
  14. Android9.0 vendor分区整包升级
  15. deepin改无盘服务器,UbuntuDeepin系统上搭建nfs服务器
  16. pytest框架中setup、teardown和setup_class、teardown_class
  17. 2017年Q1中国无线路由器市场研究报告
  18. 以太网 因特网 互联网 万维网 的区别
  19. 解读《欧洲新工业战略》:三个愿景与三大策略
  20. week3note函数

热门文章

  1. Android编程权威指南第3版 9.5 挑战练习:日期格式化
  2. SDUWH2019-2020寒假python实训--my_baidu_img_dwn
  3. 各银行卡的优缺点,有用啊
  4. 当 IT 直男约女生去看电影
  5. Xmodem Ymodem Zmodem
  6. 2003年高考语文全国最高分_2020年高考语文命题之我见
  7. 07 微架构教务系统——讲师接口
  8. 德国PCO科研级相机HS4
  9. matlab full
  10. SQL SERVER 数据库升级操作流程