###1、pod导入FMDB

  • podfile 内容如下:
# Uncomment the next line to define a global platform for your project
platform :ios, ‘8.0’target 'FMDBTest' douse_frameworks!pod 'FMDB’end复制代码
  • pod install

2、FMDB的使用

import UIKit
import FMDBclass MDFMDB: NSObject {static let shared: MDFMDB = MDFMDB() //单例let databaseFileName = "test.sqlite" //数据库名var pathToDatabase: String!  //数据库路径var database: FMDatabase!  //数据库override init() {super.init()let documentsDirectory = (NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] as NSString) as StringpathToDatabase = documentsDirectory.appending("/\(databaseFileName)")print(pathToDatabase)}func  creatDatabase()->Bool{var created = falseif !FileManager.default.fileExists(atPath: pathToDatabase){database = FMDatabase(path: pathToDatabase)if database != nil{if database.open() {//如果user表不存在,创建user表let createSchedualTableQuery = "create table if not exists user (id integer primary key autoincrement,name string not null,gender string not null,age string not null);"database.executeUpdate(createSchedualTableQuery, withArgumentsIn: []) //建表created = truedatabase.close()}}else{print("Could not open the database.")}}return created}func openDatabase() -> Bool {if database == nil {if FileManager.default.fileExists(atPath: pathToDatabase) {database = FMDatabase(path: pathToDatabase)}}if database != nil {if database.open() {return true}}return false}//数据库插入操作func insertScedualData(name:String,gender:String,age:String) {if openDatabase() {let sqlString = "insert into user (name, gender, age) values ('\(name)', '\(gender)', '\(age)')"if !database.executeStatements(sqlString) {print("Failed to insert initial data into the database.")print(database.lastError(), database.lastErrorMessage())}database.close()}}//数据库读取操作func loadTestDatas(){if openDatabase() {let query = "select * from user order by name asc;"let results = database.executeQuery(query, withArgumentsIn: [])while (results?.next())! {let id = results?.object(forColumn: "id")print(id!)let name = results?.object(forColumn: "name")print(name!)let gender = results?.object(forColumn: "gender")print(gender!)let age = results?.object(forColumn: "age")print(age!)}database.close()}}//数据库读取(具体)func loadTest(id : NSInteger){if openDatabase() {//查询时问号作为占位符占位,在database.executeQuery中将占位的参数带上。let query = "select * from user where id = ?"let results = database.executeQuery(query, withArgumentsIn: [id])while (results?.next())! {let id = results?.object(forColumn: "id")print(id!)let name = results?.object(forColumn: "name")print(name!)let gender = results?.object(forColumn: "gender")print(gender!)let age = results?.object(forColumn: "age")print(age!)}database.close()}}
}
复制代码

转载于:https://juejin.im/post/5a31ebd36fb9a0450b66667d

Swift 3 0 FMDB 初试相关推荐

  1. UIBezierPath和CAShapeLayer创建不规则View(Swift 3.0)

    最近一个朋友在做图片处理的 App,想要实现类似 MOLDIV App 拼图的UI效果(如何创建不规则的 view),就问我有什么想法.我首先想到的就是 UIBezierPath+CAShapeLay ...

  2. swift 3.0 json解析、字典转模型三种方案

    swift3.0发布有一段时间了,发现很多朋友在swift3.0json解析上上遇到很多问题,我这边为大家提三种常见的json方案. 1.第一种是自带的字典转模型,自带的需要实现系统的setValue ...

  3. Swift 3.0 预告:将 Objc 库转换成更符合 Swift 语法风格的形式

    转自:swiftcafe Swift 3.0 更新越来越临近,这次更新会给我们带来很多实用的内容,比如对 Objc 库的迁移,会更符合 Swift 的语法风格.用过之前版本的 Swift,我们会发现很 ...

  4. Swift 5.0 值得关注的特性:增加 ResultT, E: Error 枚举类型

    背景 在异步获取数据的场景中,常见的回调的数据结构是这样的:表示获取成功的数据,表示获取失败的 error.因为数据可能获取成功,也可能失败.因此回调中的数据和错误都是 optional 类型. 比如 ...

  5. 《从零开始学Swift》学习笔记(Day 7)——Swift 2.0中的print函数几种重载形式

    原创文章,欢迎转载.转载请注明:关东升的博客 Swift 2.0中的print函数有4种重载形式: print(_:).输出变量或常量到控制台,并且换行. print(_:_:).输出变量或常量到指定 ...

  6. Swift 3.0 beta 6权限访问修改

    原文地址: https://kemchenj.github.io/20... title: Swift 3.0 beta 6权限访问修改 date: 2016-08-17 17:14 前两天 swif ...

  7. ubuntu swift mysql_使用 Swift 3.0 操作 MySQL 数据库

    作者:Joe,原文链接,原文日期:2016-09-24 译者:shanks:校对:walkingway:定稿:CMB 如果你阅读过本主其他的 Swift 文章,你会发现我们是 Swift 服务器端开发 ...

  8. Swift 2.0初探:值得注意的新特性

    转眼间,Swift已经一岁多了,这门新鲜.语法时尚.类型安全.执行速度更快的语言已经渐渐的深入广大开发者的心.我同样也是非常喜爱这门新的编程语言. 今年6月,一年一度的WWDC大会如期而至,在大会上A ...

  9. Swift 3.0 on Ubuntu 15.10

    一.安装swift 3.0 1. 下载 https://swift.org/download/ 找到swift-3.0 ubuntu 15.10版本下载: https://swift.org/buil ...

最新文章

  1. UNDO表空间损坏,爆满,ORA-600[4194]/[4193]错误解决
  2. 12个深度学习面试问题
  3. Redhat9五笔输入法安装
  4. mysql dba系统学习(10)innodb引擎的redo log日志的原理 mysql dba系统学习(11)管理innodb引擎的redo log日志的一个问题
  5. 独家 | 神策 2019 数据驱动大会现场「视频+PPT」合集
  6. C#-获取某变量类型的默认值
  7. 路考步骤七步走 科目三考试一定没问题!
  8. linux查看帮助文档的命令,Linux如何使用查看一个命令的帮助文档呢?
  9. android 自定义进度条_第一百八十九回:Android中自定义ProgressBar三
  10. JAVA 可视化日历
  11. python调用opencv的速度_OpenCV-Python系列之OpenCV性能衡量与优化方法
  12. SCCM2007系列教程之八资产管理
  13. 【主席树】bzoj1112: [POI2008]砖块Klo
  14. 成功的人和不成功的人最大的区别
  15. [转载] python实现三角形面积计算
  16. [No000023]为何没有更多人从事程序员的工作?程序员常有,优秀程序员不常有!...
  17. 基于Vue.js 2.x系列 + Element UI + RBAC/AUTH权限 的响应式后台管理系统
  18. matlab导弹追踪问题垂直逃逸,综合程序设计 导弹追踪问题 (matlab)
  19. word三线格模版绘制
  20. 关于StretchDIBits 可能返回失败的原因!

热门文章

  1. 实例手册_独家数据 | 1820Fall 香港研究生商科类14个热门专业 1400+申请实例汇总...
  2. 为什么判断 n 是否为质数只需除到开平方根就行了?(直接证明)
  3. 二叉树的基本操作及哈夫曼编码/译码系统的实现
  4. Acknowledgement Modes
  5. java日期格式大全 format SimpleDateFormat
  6. 为什么都说猫有九条命呢
  7. Android 小项目之--Mini音乐播放器【简单版】(附源码)
  8. mySQL建表及练习题(下)
  9. ios 返回不会自动刷新页面问题
  10. 关于storm0.10.0版本的一个小bug