【iOS10】使用XCode8、Swift3. 操作SQLite3数据库的步骤(包括配置环境和SQLite语句)
来源:互联网 发布:sql server 混合模式 编辑:程序博客网 时间:2024/06/05 09:59
一、配置使用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).last let 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? = nil if 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的键key let cKey = sqlite3_column_name(statement, i) let key : String = String(validatingUTF8: cKey!)! //取出i位置存储的值,作为字典的值value let 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>?>? = nil if sqlite3_exec(db, cSQL, nil, nil, errmsg) == SQLITE_OK { return true } else { print("执行SQL语句时出错,错误信息为:\(errmsg)") return false } } }
- 【iOS10】使用XCode8、Swift3. 操作SQLite3数据库的步骤(包括配置环境和SQLite语句)
- iOS10及Xcode8的配置
- iOS10 Xcode8环境下适配目前遇到的问题和解决方案
- iOS10和xcode8的兼容问题
- iOS10 和 Xcode8 的改变
- Swift3 Xcode8 Ios10 开发笔记(每日更新)
- SQLite操作数据库的步骤
- Xcode8配置和iOS10适配总结
- Xcode8配置和iOS10适配总结
- swift3.0:sqlite3的使用
- swift3.0 创建sqlite数据库步骤
- iOS10/sdk10/xcode8/iphone7(+)/swift3适配
- Xcode8 iOS10 配置
- 【iOS】使用SQLite3的时候Swift3.、XCode8报错:Unsupported architecture - 'arm/arch.h'file not found - Could not
- xcode8.0和iOS10的那些事
- iOS10和xcode8的权限问题
- Xcode8和swift3更新笔记(一)
- iOS10和Xcode8
- Leetcode441. Arranging Coins
- 广播 BroadcasetReceiver
- CSS 9 响应式与自适应
- 30天自制操作系统之第1天
- C语言练习题(二)
- 【iOS10】使用XCode8、Swift3. 操作SQLite3数据库的步骤(包括配置环境和SQLite语句)
- 1002. 写出这个数 (20)
- [USACO2011Dec] Roadblock
- 初探CardView
- oracle初步使用
- Ubuntu16.04 LTS下安装JDK 1.8
- 6.Linux 运行级别
- 第十四周项目四——矩阵运算(1)矩阵相加
- 小妙招