Swift 中使用 SQLite——打开数据库
关于Swift中使用SQLite,接下来可能会分别从打开、增、删、改、查,几个方面来介绍SQLite的具体使用,这一篇重点介绍一下如何打开。
- 定义全局数据库访问句柄
/// 全局数据库访问句柄
private var db: COpaquePointer = nil
- 实现打开数据库函数
/// 打开数据库
///
/// - parameter dbName: 数据库文件名
func openDB(dbName: String) {var path = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0]path = (path as NSString).stringByAppendingPathComponent(dbName)print(path)if sqlite3_open(path, &db) != SQLITE_OK {print("打开数据库失败")return}print("打开数据库成功")
}
- 在
AppDelegate.swift
中添加以下代码打开数据库
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {DBManager.sharedManager.openDb("my.db")return true
}
小结
- 建立数据库需要给定完整的数据库路径
sqlite3_open
函数会打开数据库,如果数据库不存在,会新建一个空的数据库
,并且返回数据库指针(句柄)- 后续的所有数据库操作,都基于此
数据库句柄
进行 SQLite
数据库是直接保存在沙盒中的一个文件,只有当前应用程序可以使用- 在移动端开发时,数据库通常是以
持久式
连接方式使用的 - 所谓
持久式连接
指的是只做一次打开数据库
的操作,永远不做关闭
数据库的操作,从而可以提高数据库的访问效率
Swift 中使用 SQLite——打开数据库相关推荐
- Swift 中使用 SQLite——批量更新(事务处理)
本文是Swift 中使用 SQLite系列的收官之作,介绍一下在数据库中的批量更新. 事务 在准备做大规模数据操作前,首先开启一个事务,保存操作前的数据库的状态 开始数据操作 如果数据操作成功,提交事 ...
- Swift 中使用 SQLite——查询数据
本文主要介绍如何查询 SQLite 结果集,以及封装 SQLite 的操作方法. 准备测试代码 /// 从数据库中加载 person 数组 class func persons() -> [Pe ...
- Swift 中使用 SQLite——新增数据
本文重点介绍两个方面,1.新增数据,2.获取自动增长 ID. 建立 Person.swift 数据模型 /// 个人模型 class Person: NSObject {// MARK: - 模型属性 ...
- Swift 中使用 SQLite——修改和删除数据
本文主要介绍在SQLite中修改数据.删除数据: 更新记录 /// 将当前对象信息更新到数据库 /// /// - returns: 是否成功 func updatePerson() -> Bo ...
- SQL中use语句打开数据库
- 在 Android 应用程序中使用 SQLite 数据库以及怎么用
part one : android SQLite 简单介绍 SQLite 介绍 SQLite 一个非常流行的嵌入式数据库.它支持 SQL 语言,而且仅仅利用非常少的内存就有非常好的性能.此外它还是开 ...
- 通过宝塔无法打开数据库
今天遇到了个问题就是在宝塔面板中无法直接打开数据库,喝了点酒就不多说跟截图了, 总体就以下问题导致: 1,php版本问题 2.宝塔面板中是否开通了888端口 3.安全组问题,开通安全组的888端口
- sqlite学习笔记7:C语言中使用sqlite之打开数据库
数据库的基本内容前面都已经说得差点儿相同了.接下看看如何在C语言中使用sqlite. 一 接口 sqlite3_open(const char *filename, sqlite3 **ppDb) 打 ...
- XamarinSQLite教程Xamarin.iOS项目中打开数据库文件
XamarinSQLite教程Xamarin.iOS项目中打开数据库文件 以下是打开MyDocuments.db数据库的具体操作步骤: (1)将Mac电脑上的MyDocuments.db数据库移动到W ...
最新文章
- Spring的任务调度和邮件发送
- c语言linux打印运行时间(耗时) gettimeofday()、timeval、<sys/time.h>
- 线下报名 | NVIDIA JETSON 开发者交流会,走进哈工大!
- Android Kotlin协程和Retrofit结合使用
- maven缺少jar包问题
- 文本挖掘(part7)--Word2vec
- Android开发之API29以上Environment.getExternalStoragePublicDirectory废弃的问题
- php语言的四种循环控制语句,PHP 控制语句之循环用法示例
- 2019年最新银行存款利息,有的银行最高给到5.45%
- windy数(BZOJ-1026)
- 【论文笔记】DeepWalk:大型社会表示的在线学习
- php 计算数组的差值,数组计算差值及项的小计,该如何处理
- MySQL5.7报错[ERROR] Unix socket lock file is empty /tmp/mysql.sock.lock的解决方法
- python画动态图-利用Python如何制作好玩的GIF动图详解
- 一个人形图案程序c语言,如何用PPT绘制出人形图形
- 【印刷数字识别】基于matlab OCR识别系统【含Matlab源码 438期】
- 软考高级 真题 2017年上半年 信息系统项目管理师 案例分析
- sql语句中case when和as用法
- 硅芯思见:SystemVerilog中unpacked数组的assignment pattern
- MATLAB读取网页内链接,Matlab使用urlread()读取网页乱码问题
热门文章
- Asp.net支持的最大上传文件大小
- AWS攻略——使用CodeCommit托管代码
- zookeeper快速入门——部署
- C++11中std::forward_list单向链表的使用
- C++11中std::bind的使用
- Windows7上使用VS2013编译Caffe源码(不带GPU支持)步骤
- 【linux】Valgrind工具集详解(四):抑制错误
- coverity代码检测工具介绍_FOREPOST:一种使用反馈驱动学习软件测试的性能检测工具...
- 生产指挥调度系统_市安全生产应急救援指挥中心将大型装载机械设备储备信息纳入应急指挥调度系统...
- java配置文件实现方式_java相关:详解Spring加载Properties配置文件的四种方式