在iOS中,也同样支持sqlite。目前有很多第三方库,封装了sqlite操作,比如swift语言写的SQLite.swift、苹果官网也为我们封装了一个框架:CoreData。
它们都离不开Sqlite数据库的支持。
本文主要介绍下,如何在swift中使用原生的sqlite的API。
在Xcode中引入sqlite API
新建一个swift项目后,我们需要让项目引入sqlite的动态链接库:
1、项目配置界面,选择Build Phases
2、点开Link Binary With Libraries,点击+号,在弹窗中输入sqlite3
完成后:
3、创建桥接文件,在项目目录下新建一个头文件(h):
4、然后使用import导入sqlite库:
#import "sqlite3.h"
5、最后一步,在项目配置界面,选择Build Setting,搜索框中输入swift,在结果中选择Objective-C Bridging Header,输入刚才新建的桥接文件的名称:
整个引入工作已经完成了,可以测试下是否引入成功,在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数据库的原生用法详细介绍,希望对大家的学习有所帮助。
问题内容: 我正在创建一个将使用大量数据的应用程序,这些数据出于所有意图和目的都是静态的。我以为使用SQLite数据库处理该数据最有意义。我想知道仅使用XML文件然后将其作为原始资源访问是否有意义。请记住,可能会有大量数据,成百上千个单独的数据块。 就内存管理和总体设计考虑而言,我是否认为SQLite是最好的?如果数据基本上是静态的,SQLite是否没有意义? 问题答案: 实际上,如果数据是静态的
本文向大家介绍iOS App项目中引入SQLite数据库的教程,包括了iOS App项目中引入SQLite数据库的教程的使用技巧和注意事项,需要的朋友参考一下 引入SQLite sqlite是纯C实现的,所以注定了它是一个跨平台利器,在Android与IOS下均能使用,而且完全可以写出通用的代码,方便我们移植。当然Android和IOS下都有封装过的sqlite给开发者使用,不过这样子一个是不方便
本文讲解了如何在WeX5中使用SQLite数据库,同时展示了如何在App中加入自己的cordova插件。 SQLite是嵌入式的和轻量级的SQL数据库。广泛用于IOS、Android等设备,实现本地数据存储。 在WeX5中使用SQLlite数据库,步骤如下 1、下载SQLite的cordova插件 (1)、访问https://github.com/brodysoft/Cordova-SQLiteP
SQLite 是一个开源的嵌入式关系数据库,实现自包容、零配置、支持事务的SQL数据库引擎。其特点是高度便携、使用方便、结构紧凑、高效、可靠。 与其他数据库管理系统不同,SQLite 的安装和运行非常简单,在大多数情况下,只要确保SQLite的二进制文件存在即可开始创建、连接和使用数据库。如果您正在寻找一个嵌入式数据库项目或解决方案,SQLite是绝对值得考虑。SQLite可以是说开源的Acces
然而,敬虔加上知足的心便是大利了,因为我们没有带什么到世上来,也不能带什么去,只要有衣有食,就当知足。但那些想要发财的人,就陷在迷惑、落在网罗和许多无知有害的私欲里,叫人沉在败坏和灭亡中。贪财是万恶之根。有人贪恋钱财,就被引诱离了真道,用许多愁苦把自己刺透了。(1 TIMOTHY 6:6-10) SQLite数据库 SQLite是一个小型的关系型数据库,它最大的特点在于不需要服务器、零配置。前面的
问题内容: 我在SQLite中有一个完全填充的数据库,希望在新应用程序中使用。它相当大,因此,我希望尽可能避免将其更改为另一种格式。如何使用该数据库随我的应用一起提供的方式使用? 编辑:例如,如果我只是将文件拖放到“支持的文件”目录中,如何访问它?我该如何引用? 问题答案: 使用SQLite可以使SQLite数据库交互变得简单而干净。FMDB是SQLite C接口的Objective-C包装器。