一、配置使用SQLite时的Swift框架工程环境

步骤如下:

1、点击项目名称 - Linked Frameworks and Libraries - “+” - 搜索“libsqlite3.dylib” - 然后点击Add

【访问SQLite数据库需要使用SQLite官方提供的C语言风格的API,所以需要添加桥接文件】

2、右击项目名称 - New File… - Header File - 命名为“SQLite-Bridge.h”,并在“SQLite-Bridge.h”这个头文件中加一行代码#import "sqlite.h"

3、点击项目名称 - Build Settings - 点击All - 点击Combined - 搜索“bridging” - 单击“Objective-C Bridging Header” - 双击后面后弹出添加文件名,把刚刚创建的头文件名称写进去- 然后回车

这时候配置工作就算完成了,就可以在项目里面写或者导入数据库操作方面(比如创建数据库)的代码文件了~

  • 小提示:如果出现了找不到模块的错误,并且有如下报错:

    • Unsupported architecture
    • 'arm/arch.h'file not found
    • Could not build module 'Darwin'
    • Could not build module 'sqlite3'
    • Failed to import bridging header '…..'

在自己编写的SQLiteManager文件里面不需要写import sqlite3这句话。。直接使用SQLite语句就行了

二、通过一个demo展现数据库操作的功能的实现

制作一个demo,使用swift3、Xcode8、iOS10

该demo的功能如下:

共有两个页面,第一个页面(主页)是个tableview,用来展现查找得到的数据,第二个页面(添加页)是学号和姓名的添加文本框。通过在第二个页面的添加学生的学号和姓名,并且将修改后的数据重新加载在第一个tableview页面。tableview的页面支持delete某一条记录。

Demo的截图如下:

 

demo的源代码已上传至github:https://github.com/liuchuo/SQLite-Demo-With-Swift

三、demo的代码中的SQLManager.swift中的代码:

//
//  SQLManager.swift
//  demo11_SQLiteWithSwift
//
//  Created by ChenXin on 2016/12/2.
//  Copyright © 2016年 ChenXin. All rights reserved.
//import UIKitlet DBFILE_NAME = "Student.sqlite"public class SQLManager : NSObject {// 创建该类的静态实例变量static let instance = SQLManager();// 定义数据库变量var db : OpaquePointer? = nil// 对外提供创建单例对象的接口class func shareInstance() -> SQLManager {return instance}// 获取数据库文件的路径func getFilePath() -> String {let documentPath = NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.documentDirectory, FileManager.SearchPathDomainMask.userDomainMask, true).lastlet DBPath = (documentPath! as NSString).appendingPathComponent(DBFILE_NAME)print("数据库的地址是:\(DBPath)")return DBPath}func createDataBaseTableIfNeeded() {// 只接受C语言的字符串,所以要把DBPath这个NSString类型的转换为cString类型,用UTF8的形式表示let cDBPath = getFilePath().cString(using: String.Encoding.utf8)// 第一个参数:数据库文件路径,这里是我们定义的cDBPath// 第二个参数:数据库对象,这里是我们定义的db// SQLITE_OK是SQLite内定义的宏,表示成功打开数据库if sqlite3_open(cDBPath, &db) != SQLITE_OK {// 失败print("数据库打开失败~!")} else {// 创建表的SQL语句(根据自己定义的数据model灵活改动)print("数据库打开成功~!")let createStudentTableSQL = "CREATE TABLE IF NOT EXISTS 't_Student' ('stuNum' TEXT NOT NULL PRIMARY KEY AUTOINCREMENT, 'stuName' TEXT);"if execSQL(SQL: createStudentTableSQL) == false {// 失败print("执行创建表的SQL语句出错~")} else {print("创建表的SQL语句执行成功!")}}}// 查询数据库,传入SQL查询语句,返回一个字典数组func queryDataBase(querySQL : String) -> [[String : AnyObject]]? {// 创建一个语句对象var statement : OpaquePointer? = nilif querySQL.lengthOfBytes(using: String.Encoding.utf8) > 0 {let cQuerySQL = (querySQL.cString(using: String.Encoding.utf8))!// 进行查询前的准备工作// 第一个参数:数据库对象,第二个参数:查询语句,第三个参数:查询语句的长度(如果是全部的话就写-1),第四个参数是:句柄(游标对象)if sqlite3_prepare_v2(db, cQuerySQL, -1, &statement, nil) == SQLITE_OK {var queryDataArr = [[String: AnyObject]]()while sqlite3_step(statement) == SQLITE_ROW {// 获取解析到的列let columnCount = sqlite3_column_count(statement)// 遍历某行数据var temp = [String : AnyObject]()for i in 0..<columnCount {// 取出i位置列的字段名,作为temp的键keylet cKey = sqlite3_column_name(statement, i)let key : String = String(validatingUTF8: cKey!)!//取出i位置存储的值,作为字典的值valuelet cValue = sqlite3_column_text(statement, i)let value = String(cString: cValue!)temp[key] = value as AnyObject}queryDataArr.append(temp)}return queryDataArr}}return nil}// 执行SQL语句的方法,传入SQL语句执行func execSQL(SQL : String) -> Bool {let cSQL = SQL.cString(using: String.Encoding.utf8)let errmsg : UnsafeMutablePointer<UnsafeMutablePointer<Int8>?>? = nilif sqlite3_exec(db, cSQL, nil, nil, errmsg) == SQLITE_OK {return true} else {print("执行SQL语句时出错,错误信息为:\(errmsg)")return false}}
}

【iOS10】使用XCode8、Swift3. 操作SQLite3数据库的步骤(包括配置环境和SQLite语句)相关推荐

  1. Golang操作sqlite3数据库教程

    Golang操作sqlite3数据库教程 本文介绍sqlite数据库,如何使用sqlite3包操作轻量级关系型数据库. sqlite概述 sqlite是嵌入式关系型数据库引擎,官方描述为自包含的.无服 ...

  2. sqlite3常用命令以及django如何操作sqlite3数据库

    一.如何进入sqlite3交互模式进行命令操作? 1.确认sqlite3是否已经安装 进去python命令行,执行 >>> import sqlite3 >>> 没 ...

  3. python不可以操作access数据库_Python操作Access数据库基本操作步骤分析

    Python编程语言的出现,带给开发人员非常大的好处.我们可以利用这样一款功能强大的面向对象开源语言来轻松的实现许多特定功能需求.比如Python操作Access数据库的功能实现等等.在Python操 ...

  4. node sqlite 插入数据_使用 Sequelize 操作 Sqlite3 数据库

    0x01 Sequelize 是什么? Sequelize 是一个基于 Promise 的 Node.js ORM,目前支持 Postgres.MySQL.SQLite 和 Microsoft SQL ...

  5. 27.Qt操作sqlite3数据库

    1 sqlite3操作编程 问题1 驱动无法加载 QSqlDatabase: QSQLITE driver not loaded 解决办法将Qt自带安装目录下的sql文件拷贝到可执行文件目录下. 2 ...

  6. python对sqlite增删改查_Python操作sqlite3数据库 增删改查

    SQLite,是一款轻型的数据库,占用资源非常的低.这里记录下对sqlite3的增删改查相关操作,顺便复习一下SQL语句- -. 一.创建数据库 连接到一个现有的数据库.如果数据库不存在,那么它就会被 ...

  7. Linux下使用C++操作redis数据库

    Linux下使用C++操作redis数据库 文章目录 Linux下使用C++操作redis数据库 一.安装配置hiredis.h 二.接口介绍 1.**`建立链接:redisConnect`** 2. ...

  8. 操作 mysql 不生成日志_利用Python操作MySQL数据库,以后不懂这些是要被鄙视的!...

    前言 在工作中,我们需要经常对数据库进行操作,比如 Oracle.MySQL.SQL Sever 等,今天我们就学习如何利用Python来操作 MySQL 数据库. 本人环境:Python 3.7.0 ...

  9. IOS数据库操作SQLite3使用详解(转)

    iPhone中支持通过sqlite3来访问iPhone本地的数据库. 具体使用方法如下 1:添加开发包libsqlite3.0.dylib 首先是设置项目文件,在项目中添加iPhone版的sqlite ...

最新文章

  1. 【 FPGA 】FIR 滤波器之滤波器的系数数据(Filter Coefficient Data)
  2. ORACLE下载当中的gateways,companion,clusterware都是什么用途?
  3. iOS方法类:CGAffineTransform
  4. CentOS 7.2.1511 x64下载地址
  5. 如何在MySQL中设置主从复制
  6. 献策企业:制定优秀移动化企业七步骤
  7. OpenCV图像处理基础操作(4)
  8. 51单片机三种烧录的方法介绍
  9. 计算机电子智能化贰级,电子与智能化工程专业承包资质分为一级、二级。
  10. 什么是AAR文件以及如何在Android开发中使用
  11. 贩卖个人信息非法获利300余万,平安惠普、拍拍贷都是买方
  12. 数据拟合之Excel篇
  13. Python实例:小游戏20148
  14. python批量生成经纬度坐标查询_用Python评测三种批量查询经纬度的方法,你pick哪一种?...
  15. 一名蒟蒻OIer(或许还算不上?)的NOI_Online2022的日录
  16. 年货来咯:精选年度最受欢迎干货,覆盖客户端、服务端、前端、数据、算法……...
  17. Day09.面向对象进阶
  18. java能搞底层吗_彻底搞清楚Java并发 (二) 底层实现
  19. 2022-2027年中国金融市场规模现状及投资规划建议报告
  20. android身高控件_RuleView Android 自定义标尺控件(选择身高、体重等) @codeKK Android开源站...

热门文章

  1. Android中关于Adapter的使用(中)SimpleAdapter
  2. Android中应用程序drawable图片资源占用内存的统计
  3. windows下MySQL 5.7+ 解压缩版安装配置方法
  4. 04 Ribbon介绍
  5. redux-form(V7.4.2)笔记(三)之Flow简介
  6. preventDefault, stopPropagation, stopImmediatePropagation 三者的区别
  7. java判断字符串是否为乱码
  8. 配置eclipse编写html/js/css/jsp/java时自动提示
  9. [20160803]另类行迁移.txt
  10. 黑客购买恶意软件攻击航空航天和交通行业,潜伏5年+