手机
当前位置:查字典教程网 >编程开发 >IOS开发 >iOS中sqlite数据库的原生用法
iOS中sqlite数据库的原生用法
摘要:在iOS中,也同样支持sqlite。目前有很多第三方库,封装了sqlite操作,比如swift语言写的SQLite.swift、苹果官网也为...

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

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

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

在Xcode中引入sqlite API

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

1、项目配置界面,选择Build Phases

iOS中sqlite数据库的原生用法1

2、点开Link Binary With Libraries,点击+号,在弹窗中输入sqlite3

iOS中sqlite数据库的原生用法2

完成后:

iOS中sqlite数据库的原生用法3

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

iOS中sqlite数据库的原生用法4

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

#import "sqlite3.h"

iOS中sqlite数据库的原生用法5

5、最后一步,在项目配置界面,选择Build Setting,搜索框中输入swift,在结果中选择Objective-C Bridging Header,输入刚才新建的桥接文件的名称:

iOS中sqlite数据库的原生用法6

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

创建(打开)与关闭数据库

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

//数据库存放路径 let sqlitepath = NSHomeDirectory().stringByAppendingPathComponent("Documents/sqlite3.db") //打开数据库,指定数据库文件路径,如果文件不存在后先创建文件,再打开,所以无需手动创建文件 let state = sqlite3_open(sqlitepath, &db) if state == SQLITE_OK{ println("打开数据库成功") }else{ println("打开数据库失败") }

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

var db:COpaquePointer = nil override func viewDidLoad() { super.viewDidLoad() ... }

创建表和删除表

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

//创建表 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来绑定值。

//插入数据 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) }

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

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)

删除数据:

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

查询数据

//查询数据 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数据库的原生用法详细介绍,希望对大家的学习有所帮助。

【iOS中sqlite数据库的原生用法】相关文章:

iOS开发中UISwitch按钮的使用方法简介

详解iOS应用开发中Core Data数据存储的使用

iOS App开发中Masonry布局框架的基本用法解析

iOS开发ASIHTTPRequest数据压缩和Cookie的使用

iOS应用开发中UIScrollView滚动视图的基本用法总结

总结iOS实现渐变颜色的三种方法

iOS中的表单按钮选项UIActionSheet常用方法整理

iOS开发中对于摄像头的一些基本使用方法分享

检测iOS设备是否越狱的方法

iOS App中UITableView左滑出现删除按钮及其cell的重用

精品推荐
分类导航