Swift - 操作SQLite数据库(引用SQLite3库)

SQLite轻量级数据库在移动应用中使用非常普遍,但是目前的库是C编写的,为了方便使用,对SQLite相关的操作用Swift进行了封装。这个封装代码使用了一个开源项目SQLiteDB,地址是:https://github.com/fahimf/sqlitedb

重要事项:SQLiteBD原作者最后只更新到Swift1.2便停止,说后面不会再更新了,如果使用Xcode7便会报错。我这里在其基础上进行了修改,使其支持Swift2.0。

下面通过一个样例展示SQlite数据库连接,创建表,查询数据,插入数据等操作。 
1,当输入用户名和手机号,点击保存即可将数据存入数据库 
2,下次启动,自动从数据库中载入初始化信息
操作步骤:
1,在Build Phases -> Link Binary With Libraries中点击加号,添加libsqlite3.0.tdb到项目中来
2,创建连接头文件Bridging-Header.h
1
2
3
#import "sqlite3.h"
#import <time.h>
</time.h>

3,在项目编译属性里引用头文件


4,导入SQLiteDB的代码(SQLiteDB.swift和String-Extras.swift),代码结构如下:

5,ViewController.swift代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
import UIKit
class ViewController: UIViewController {
     
    var db:SQLiteDB!
     
    @IBOutlet var txtUname: UITextField!
    @IBOutlet var txtMobile: UITextField!
     
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
         
        //获取数据库实例
        db = SQLiteDB.sharedInstance()
        //如果表还不存在则创建表
        db.execute(
         "create table if not exists t_user(uid integer primary key,uname varchar(20),mobile varchar(20))"
        )
        //如果有数据则加载
        initUser()
    }
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
     
    //点击保存
    @IBAction func saveClicked(sender: AnyObject) {
        saveUser()
    }
     
    //从SQLite加载数据
    func initUser() {
        let data = db.query("select * from t_user")
        if data.count > 0 {
            //获取最后一行数据显示
            let user = data[data.count - 1] as SQLRow
            txtUname.text = user["uname"]?.asString()
            txtMobile.text = user["mobile"]?.asString()
        }
    }
     
    //保存数据到SQLite
    func saveUser() {
        let uname = self.txtUname.text!
        let mobile = self.txtMobile.text!
        //插入数据库,这里用到了esc字符编码函数,其实是调用bridge.m实现的
        let sql = "insert into t_user(uname,mobile) values('\(uname)','\(mobile)')"
        println("sql: \(sql)")
        //通过封装的方法执行sql
        let result = db.execute(sql)
    }
}

最新代码下载:MySQLite2.zip

老代码下载(只支持Swift1.2):MySQLite.zip

转载于:https://www.cnblogs.com/Free-Thinker/p/4838366.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/290374.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何在Clion中使用C++调用Python代码

在很多时候&#xff0c;我们需要在一个c工程项目中调用部分Python代码&#xff0c;这就需要我们实现Python和C之间的交互。交互方式有两种&#xff1a;1. 依靠 TCP 建立的网络通信交互&#xff1b;2. 嵌入式混合语言编程&#xff08;Embedding Code&#xff09;。这里主要介绍后…

.NET6之MiniAPI(二十四):用Polly重试

为了保障系统的稳定和安全&#xff0c;在调用三方服务时&#xff0c;可以增加重试和熔断。重试是调用一次失败后再试几试&#xff0c;避免下游服务一次闪断&#xff0c;就把整个链路终止&#xff1b;熔断是为了防止太多的次数的无效访问&#xff0c;导致系统不可知异常。Polly是…

CLion 中使用 C++ 版本的 OpenCV

配置环境&#xff1a; Windows 10CLion 2020OpenCV 3.4.1MinGW-w64 1. 下载 CLion 并配置好 MinGW CLion 下载地址&#xff1a;https://www.jetbrains.com/clion MinGW 安装包下载地址&#xff1a;链接&#xff1a;https://pan.baidu.com/s/1c00uHbcf_jGeDDrVg99jtA 提取码&…

如何理解 C# 中的 System.Void 类型?

咨询区 ordag我知道方法声明成 void 表示不返回什么东西&#xff0c;但我发现在 C# 中 void 不仅仅是一个关键词&#xff0c;而且还是一个真实的类型。void 是 System.Void 的别名&#xff0c;就像 int 的别名是 System.Int32 一样&#xff0c;但为什么不允许直接使用Void类型呢…

获得手机的ip

本文转载至 http://blog.csdn.net/showhilllee/article/details/8746114 iosip手机貌似ASI里获取ip地址的链接不可以了。也曾试过whatismyip&#xff0c;在其网站上的截图获取的ip是正确的&#xff0c;单不知道为什么在我这里却是错误的。所以&#xff0c;在这里分享一下获得手…

Idea maven项目不能新建package和class的解决

如图&#xff0c;新建的maven项目不能新建package 这是因为Java是普通的文件夹&#xff0c;要设置为 现在就可以了

基于文本知识库的强化学习技术——Learning to Win by Reading Manuals in a Monte-Carlo Framework

论文链接&#xff1a;http://people.csail.mit.edu/branavan/papers/acl2011.pdf 文章目录1. 背景介绍2. 将攻略文本引入值函数 Q(s,a)Q(s, a)Q(s,a) 评价2.1 复杂环境下使用传统 Q(s,a)Q(s, a)Q(s,a) 函数的缺陷2.2 设计 Q(s,a,d)Q(s, a, d)Q(s,a,d) 神经网络2.3 模型训练流程…

这是Blazor上传文件的最佳方式吗?

Blazor不得不说真是好东西&#xff0c;极大的提升了开发效率&#xff0c;很多的页面交互功能基本上只需要写很少的代码就能实现了&#xff0c;而且还是无js实现&#xff0c;你也绝对没有想到过&#xff0c;Blazor实现文件上传是有多么简单&#xff01;先说结论&#xff1a;Blaz…

ubuntu 下安装五笔输入法

2019独角兽企业重金招聘Python工程师标准>>> 从两年开始用五笔的吧&#xff0c;自从我学会用五笔之后&#xff0c;基本上就没有用过拼音了&#xff0c;我记忆中使用拼音也就那么几次&#xff0c;好像都是在远程协助别人的时候&#xff0c;用他们电脑上的拼音。然后我…

openstack horizon国际化分析

2019独角兽企业重金招聘Python工程师标准>>> 参考 官网国际化介绍&#xff1a;https://docs.djangoproject.com/en/1.7/topics/i18n/translation/#module-django.conf.urls.i18n Django模板&#xff08;网页多语种支持/国际化&#xff09;&#xff1a; http://blog.…

6. 堪比JMeter的.Net压测工具 - Crank 实战篇 - 收集诊断跟踪信息与如何分析瓶颈

1. 前言上面我们已经做到了接口以及场景压测&#xff0c;通过控制台输出结果&#xff0c;我们只需要将结果收集整理下来&#xff0c;最后汇总到excel上&#xff0c;此次压测报告就可以完成了&#xff0c;但收集报告也挺麻烦的&#xff0c;交给谁呢……找了一圈、没找到愿意接手…

被AI人机疯狂单杀?王者荣耀AI“绝悟”亲测体验

文章目录&#xff08;一&#xff09; 如何评测“绝悟”的智能程度&#xff1f;&#xff08;二&#xff09;“绝悟”个体操作能力分析2.1 草丛埋伏2.2 越塔强杀2.3 技能避伤2.4 技能combo&#xff08;三&#xff09;“绝悟”团队意识能力分析3.1 团队支援3.2 团队控龙3.3 反野意…

background意识(两)

今天看到了有关学习的价值的文章background于background-position该博客&#xff0c;现在与大家分享&#xff1a;语法&#xff1a; background-position : length || length background-position : position || position 取值&#xff1a; length&#xff1a;百分数 |由浮点数字…

js 月份加6个月_美国切削工具6月份订单较上月增加10.1

根据美国切削工具协会(USCTI)和AMT美国制造技术协会的数据&#xff0c;2020年6月&#xff0c;美国切削工具的总消费额为1.506亿美元。根据参与切削工具市场报告合作的公司报告&#xff0c;这一总额比5月份的1.368亿美元增长了10.1%&#xff0c;与2019年6月报告的1.997亿美元相比…

selenium 使用js执行脚本儿链接整理

2019独角兽企业重金招聘Python工程师标准>>> 使用Webdriver执行js小结&#xff1a;http://lijingshou.iteye.com/blog/2018929 SeleniumWebdriver学习(三)执行JS脚本&#xff1a;http://www.tuicool.com/articles/buIbeiN selenium webdriver 执行javascript代码&am…

接口返回json对象出现套娃递归问题 | System.Text.Json 版本

前言看到一篇文章《Asp-Net-Core开发笔记&#xff1a;接口返回json对象出现套娃递归问题》原文是使用 NewtonsoftJson 解决的返回json对象出现套娃递归问题&#xff1a;services.AddControllersWithViews().AddNewtonsoftJson(options > {options.SerializerSettings.Refere…

高效性跨平台分布式软件开发技术——gRPC

文章目录1. gRPC&#xff08;google Remote Procedure Call&#xff09; 技术 —— 高效性地跨平台、跨语言开发2. 基于 python 实现 gRPC 框架2.1 一个 gPRC 项目必须包含的几大部分2.2 helloworld.proto 文件——定义全局可调用函数及其参数数据结构2.3 server.py 文件——实…

在VS中设置比较和谐的字体和颜色的方法

作者&#xff1a;朱金灿来源&#xff1a;http://blog.csdn.net/clever101先在studiostyl.es网站选择你喜欢的字体方案&#xff0c;我个人比较喜欢这款&#xff1a;Humane Studio&#xff0c;注意在网页上选择你使用VS版本&#xff0c;然后单击Downlaod this scheme就可以了&…

一个脚本实现全量增量备份,并推送到远端备份中心服务器

2019独角兽企业重金招聘Python工程师标准>>> 摘要 由于工作需要&#xff0c;刚好需要这样一个功能的脚本&#xff0c;主要解决&#xff1a; 1. 不想在crontab中调度两条备份任务&#xff0c;一个做全量一个做增量 2. 如果每小时做增量&#xff0c;凌晨4点做全量&…

地壳中元素含量排名记忆口诀_Nature:利用熔融包裹体的元素和同位素示踪俯冲带流体来源...

Nature&#xff1a;利用熔融包裹体的元素和同位素示踪俯冲带流体来源在汇聚板块边缘&#xff0c;大洋岩石圈通过俯冲作用携带挥发分(尤其是水)进入地幔。这些俯冲下去的水/流体控制着岩浆产物、地震活动、陆壳形成和资源成矿。但是&#xff0c;识别不同流体的来源(沉积物&#…