服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - IOS - iOS中sqlite数据库的原生用法

iOS中sqlite数据库的原生用法

2021-01-18 13:41iOS开发网 IOS

这篇文章主要为大家详细介绍了iOS中sqlite数据库的原生用法,sqlite数据库相信各位早已耳闻,非常轻巧的一个数据库,数据库仅一个文件,即建即用,感兴趣的小伙伴们可以参考一下3

在ios中,也同样支持sqlite。目前有很多第三方库,封装了sqlite操作,比如swift语言写的sqlite.swift、苹果官网也为我们封装了一个框架:coredata。

它们都离不开sqlite数据库的支持。

本文主要介绍下,如何在swift中使用原生的sqlite的api。

在xcode中引入sqlite api
新建一个swift项目后,我们需要让项目引入sqlite的动态链接库:

1、项目配置界面,选择build phases

iOS中sqlite数据库的原生用法

2、点开link binary with libraries,点击+号,在弹窗中输入sqlite3

iOS中sqlite数据库的原生用法

完成后:

iOS中sqlite数据库的原生用法

3、创建桥接文件,在项目目录下新建一个头文件(h):

iOS中sqlite数据库的原生用法

4、然后使用import导入sqlite库:

#import "sqlite3.h"

iOS中sqlite数据库的原生用法

5、最后一步,在项目配置界面,选择build setting,搜索框中输入swift,在结果中选择objective-c bridging header,输入刚才新建的桥接文件的名称:

iOS中sqlite数据库的原生用法

整个引入工作已经完成了,可以测试下是否引入成功,在swift文件中,输入sqlite3,看是否有sqlite3相关的智能提示出来。

创建(打开)与关闭数据库
要创建或者打开一个sqlite数据库,使用sqlite3_open方法,我们无需手动创建一个数据库文件,如果没有文件,sqlite3_open方法会为我们自动创建数据库文件,然后打开数据库。

?
1
2
3
4
5
6
7
8
9
//数据库存放路径
let sqlitepath = nshomedirectory().stringbyappendingpathcomponent("documents/sqlite3.db")
//打开数据库,指定数据库文件路径,如果文件不存在后先创建文件,再打开,所以无需手动创建文件
let state = sqlite3_open(sqlitepath, &db)
if state == sqlite_ok{
 println("打开数据库成功")
}else{
 println("打开数据库失败")
}

这里sqlite3_open方法的第二个参数是一个指针,是数据库打开后返回的一个操作指针,通过使用它,我们可以对数据库进行一系列的操作。我们先把它定义在外面,方便我们使用。

?
1
2
3
4
5
var db:copaquepointer = nil
override func viewdidload() {
 super.viewdidload()
 ...
}

创建表和删除表
使用sqlite3_exec方法可以执行一段sql语句,主要就是sql语句的差异,其他都一样:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
//创建表
let createtable = "create table if not exists students (id integer primary key autoincrement,name
text,stuid integer)"
let result = sqlite3_exec(db, createtable, nil, nil, nil)
if result == sqlite_ok{
 println("创建表成功")
}
//删除表
let removetable = "drop table studets"
let result2 = sqlite3_exec(db, removetable, nil, nil, nil)
if result2 == sqlite_ok{
 println("删除表成功")
}

插入更新删除数据
插入数据使用了占位符,sql语句中使用问号代表值。使用sqlite3_bind_xxx来绑定值。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//插入数据
let inserttable = "insert into studets (stuid,name) values(?,?)"
var statement:copaquepointer = nil
let result3 = sqlite3_prepare_v2(db, inserttable, -1, &statement, nil)
if result3 == sqlite_ok{
 //绑定数据
 sqlite3_bind_int(statement, 1, 1)
 sqlite3_bind_text(statement, 2, "lijialong", -1, nil)
 
 //执行
 if sqlite3_step(statement) == sqlite_done{
  println("数据插入成功")
 }
 sqlite3_finalize(statement)
 }

更新数据也类似几个步骤:

?
1
2
3
4
5
let updatetable = "update studets set name ='ss' where id = 1"
var statement:copaquepointer = nil
sqlite3_prepare_v2(db, updatetable, -1, &statement, nil)
sqlite3_step(statement)
sqlite3_finalize(statement)

删除数据:

?
1
2
3
4
let deleterow = "delete from studets where name='lijialong'"
sqlite3_prepare_v2(db, deleterow, -1, &statement, nil)
sqlite3_step(statement)
sqlite3_finalize(statement)

查询数据

?
1
2
3
4
5
6
7
8
9
//查询数据
let query = "select * from studets"
//这条执行后,数据就已经在sattement中了
sqlite3_prepare_v2(db, query, -1, &statement, nil)
//游标往下走一步,如果返回sqlite_row就进入
while sqlite3_step(statement) == sqlite_row{
 let id = sqlite3_column_int(statement, 0)
 let stuid = sqlite3_column_int(statement, 2)
}

以上就是关于ios中sqlite数据库的原生用法详细介绍,希望对大家的学习有所帮助。

延伸 · 阅读

精彩推荐
  • IOSiOS通过逆向理解Block的内存模型

    iOS通过逆向理解Block的内存模型

    自从对 iOS 的逆向初窥门径后,我也经常通过它来分析一些比较大的应用,参考一下这些应用中某些功能的实现。这个探索的过程乐趣多多,不仅能满足自...

    Swiftyper12832021-03-03
  • IOSiOS布局渲染之UIView方法的调用时机详解

    iOS布局渲染之UIView方法的调用时机详解

    在你刚开始开发 iOS 应用时,最难避免或者是调试的就是和布局相关的问题,下面这篇文章主要给大家介绍了关于iOS布局渲染之UIView方法调用时机的相关资料...

    windtersharp7642021-05-04
  • IOS关于iOS自适应cell行高的那些事儿

    关于iOS自适应cell行高的那些事儿

    这篇文章主要给大家介绍了关于iOS自适应cell行高的那些事儿,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的...

    daisy6092021-05-17
  • IOSiOS中tableview 两级cell的展开与收回的示例代码

    iOS中tableview 两级cell的展开与收回的示例代码

    本篇文章主要介绍了iOS中tableview 两级cell的展开与收回的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...

    J_Kang3862021-04-22
  • IOSiOS 雷达效果实例详解

    iOS 雷达效果实例详解

    这篇文章主要介绍了iOS 雷达效果实例详解的相关资料,需要的朋友可以参考下...

    SimpleWorld11022021-01-28
  • IOSIOS 屏幕适配方案实现缩放window的示例代码

    IOS 屏幕适配方案实现缩放window的示例代码

    这篇文章主要介绍了IOS 屏幕适配方案实现缩放window的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要...

    xiari5772021-06-01
  • IOS解析iOS开发中的FirstResponder第一响应对象

    解析iOS开发中的FirstResponder第一响应对象

    这篇文章主要介绍了解析iOS开发中的FirstResponder第一响应对象,包括View的FirstResponder的释放问题,需要的朋友可以参考下...

    一片枫叶4662020-12-25
  • IOSIOS开发之字典转字符串的实例详解

    IOS开发之字典转字符串的实例详解

    这篇文章主要介绍了IOS开发之字典转字符串的实例详解的相关资料,希望通过本文能帮助到大家,让大家掌握这样的方法,需要的朋友可以参考下...

    苦练内功5832021-04-01